Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.env
target/
web/target/
**/.idea
**/.vscode
5 changes: 3 additions & 2 deletions .env → .env.example
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Environment configuration for IBM Quantum access
QUANTUM_IBM_TOKEN=<your_ibm_token_if_ibm_mode>
QUANTUM_PYTHON_EXEC=/usr/bin/python3
QUANTUM_PYTHON_EXEC=/opt/venv/bin/python
QUANTUM_LOCAL_SCRIPT_PATH=/app/python/grover.py
QUANTUM_LOCAL_RANGE_SCRIPT_PATH=/app/python/grover_range.py
QUANTUM_LOCAL_EXPLAIN_SCRIPT_PATH=/app/python/explain.py
QUANTUM_IBM_SCRIPT_PATH=/app/python/grover_ibm.py
QUANTUM_IBM_RANGE_SCRIPT_PATH=/app/python/grover_range_ibm.py
QUANTUM_EXECUTION_MODE=LOCAL
QUANTUM_EXECUTION_MODE=LOCAL
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,6 @@ Thumbs.db
# Docker
*.pid
*.pid.lock

.env
!.env
82 changes: 42 additions & 40 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,53 +2,55 @@
FROM maven:3.9.6-eclipse-temurin-17 AS builder
WORKDIR /build
COPY . .
RUN mvn clean package -DskipTests
RUN mvn -q -DskipTests clean package

# === Stage 2: Runtime container with Python + Java ===
# === Stage 2: Runtime with Java + Python (venv) ===
FROM openjdk:17-slim
WORKDIR /app

# Copy the compiled JAR from the builder stage
COPY --from=builder /build/web/target/plank-db.jar ./plank-db.jar

# Copy Python scripts and .env
COPY python/ ./python/
COPY .env /app/.env

# Install system dependencies for Qiskit
RUN apt-get update && \
apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
python3 \
python3-pip \
python3-venv \
build-essential \
gcc \
g++ \
libopenblas-dev \
liblapack-dev \
libomp-dev \
git && \
apt-get clean && \
# System deps required by Qiskit/Aer (runtime libs included)
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv \
build-essential gcc g++ gfortran libgfortran5 \
libopenblas-dev liblapack-dev \
libstdc++6 libgomp1 \
ca-certificates curl && \
rm -rf /var/lib/apt/lists/*

# Upgrade pip and install Qiskit & dependencies
RUN pip3 install --no-cache-dir --upgrade pip && \
pip3 install --no-cache-dir \
"qiskit~=1.0" \
"qiskit-aer" \
"qiskit-algorithms" \
"qiskit-ibm-runtime>=0.24.0" \
"tweedledum" \
"python-dotenv" \
"numpy==1.26.4"
# Create dedicated virtualenv
RUN python3 -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH" \
PYTHONUNBUFFERED=1

# Install Python packages into *this* venv only
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir \
"numpy==1.26.4" \
"qiskit==1.1.1" \
"qiskit-aer==0.14.2" \
"qiskit-algorithms==0.2.2" \
"qiskit-ibm-runtime==0.24.0" \
"tweedledum" \
"python-dotenv" && \
python - <<'PY'
import qiskit, qiskit_aer, qiskit_algorithms
print("QISKIT", qiskit.__version__)
print("AER", qiskit_aer.__version__)
print("ALG", qiskit_algorithms.__version__)
PY

# App files
WORKDIR /app
COPY --from=builder /build/web/target/plank-db.jar ./plank-db.jar
COPY python/ ./python/

# Python script path
ENV PYTHONPATH=/app/python
# Point app to the exact interpreter; expose scripts via PYTHONPATH
ENV PYTHONPATH=/app/python \
QUANTUM_PYTHON_EXEC=/opt/venv/bin/python \
SPRING_PROFILES_ACTIVE=default

ENV SPRING_PROFILES_ACTIVE=default
# (Optional) more verbose logs for the adapter package
ENV LOGGING_LEVEL_io_github_swampus_quantum_explain_adapter=TRACE

EXPOSE 8085

ENTRYPOINT ["java", "-jar", "plank-db.jar"]
ENTRYPOINT ["java", "-jar", "plank-db.jar"]
Loading