/
Dockerfile_prod
104 lines (75 loc) · 4.95 KB
/
Dockerfile_prod
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
FROM python:3.8.2-buster
MAINTAINER Sergio Martinez-Losa
ENV DEBIAN_FRONTEND noninteractive
# Optional: set your IBM QISKIT API TOKEN HERE
#ENV QISKIT_API_TOKEN="UPDATE_THIS_API_TOKEN"
# ROLL YOUR VERSION HERE
ENV QISKIT_RELEASE=0.25.0
ENV QISKIT_TERRA_RELEASE=0.17.0
ENV QISKIT_AER_RELEASE=0.8.0
ENV QISKIT_IGNIS_RELEASE=0.6.0
ENV QISKIT_AQUA_RELEASE=0.9.0
ENV QISKIT_IBMQ_RELEASE=0.12.2
ENV QISKIT_NATURE_RELEASE=0.1.0
ENV QISKIT_ML_RELEASE=0.1.0
ENV QISKIT_OPTIMIZATION_RELEASE=0.1.0
ENV QISKIT_FINANCE_RELEASE=0.1.0
ENV QISKIT_USER=qiskit
# CREATE NEW USER
RUN useradd --create-home -s /bin/bash $QISKIT_USER
ENV QISKIT_DIR=/home/$QISKIT_USER
COPY requirements.txt $QISKIT_DIR
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y build-essential poppler-utils texlive-latex-base texlive-latex-extra libopenblas-dev \
sudo unzip wget nano poppler-utils cmake git libssl-dev zlib1g-dev libncurses5-dev libgdbm-dev \
libnss3-dev libssl-dev libreadline-dev libffi-dev curl libsqlite3-dev
WORKDIR $QISKIT_DIR
RUN mkdir -p qiskit-jupyter
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
RUN pip3 install pip==20.3.1
RUN pip install -r requirements.txt
# Release versions: https://qiskit.org/documentation/release_notes.html
# There are 3 ways to install QISKIT, listed below (default option 1)
# OPTION 1: INSTALL QISKIT FROM PIP (easy way) STABLE
RUN pip install qiskit==$QISKIT_RELEASE qiskit-machine-learning==$QISKIT_ML_RELEASE qiskit-nature==$QISKIT_NATURE_RELEASE \
qiskit-optimization==$QISKIT_OPTIMIZATION_RELEASE qiskit-finance==$QISKIT_FINANCE_RELEASE qiskit-machine-learning[torch]
# OPTION 2: INSTALL EACH COMPONENT FROM PIP (easy way) STABLE
#RUN pip install qiskit-terra==$QISKIT_TERRA_RELEASE qiskit-aer==$QISKIT_AER_RELEASE qiskit-ignis==$QISKIT_IGNIS_RELEASE \
# qiskit-ibmq-provider=$QISKIT_IBMQ_RELEASE qiskit-aqua==$QISKIT_AQUA_RELEASE \
# qiskit-machine-learning==$QISKIT_ML_RELEASE qiskit-nature==$QISKIT_NATURE_RELEASE \
# qiskit-optimization==$QISKIT_OPTIMIZATION_RELEASE qiskit-finance==$QISKIT_FINANCE_RELEASE
# OPTION 3: INSTALL QISKIT FROM SOURCE (easy way) STABLE
#RUN pip install tox
#RUN cd $QISKIT_DIR && wget https://github.com/Qiskit/qiskit/archive/$QISKIT_RELEASE.zip && unzip $QISKIT_RELEASE.zip && mv $QISKIT_RELEASE qiskit
#RUN cd qiskit && pip install -r requirements-dev.txt && pip install -e .
#RUN cd $QISKIT_DIR && wget https://github.com/Qiskit/qiskit-nature/archive/$QISKIT_NATURE_RELEASE.zip && unzip $QISKIT_NATURE_RELEASE.zip && mv $QISKIT_NATURE_RELEASE qiskit-nature && \
# cd qiskit-nature && pip install -r requirements-dev.txt && pip install -e .
#RUN cd $QISKIT_DIR && wget https://github.com/Qiskit/qiskit-optimization/archive/$QISKIT_OPTIMIZATION_RELEASE.zip && unzip $QISKIT_OPTIMIZATION_RELEASE.zip && mv $QISKIT_OPTIMIZATION_RELEASE qiskit-optimization && \
# cd qiskit-optimization && pip install -r requirements-dev.txt && pip install -e .
#RUN cd $QISKIT_DIR && wget https://github.com/Qiskit/qiskit-finance/archive/$QISKIT_FINANCE_RELEASE.zip && unzip $QISKIT_FINANCE_RELEASE.zip && mv $QISKIT_FINANCE_RELEASE qiskit-finance && \
# cd qiskit-finance && pip install -r requirements-dev.txt && pip install -e .
#RUN cd $QISKIT_DIR && wget https://github.com/Qiskit/qiskit-machine-learning/archive/$QISKIT_ML_RELEASE.zip && unzip $QISKIT_ML_RELEASE.zip && mv $QISKIT_ML_RELEASE qiskit-ml && \
# cd qiskit-ml && pip install -r requirements-dev.txt && pip install -e .
RUN pip install -I git+https://github.com/qiskit-community/Quantum-Challenge-Grader.git
# FINISHING PACKAGES
RUN pip install keras pandas xlrd seaborn scikit-learn matplotlib opencv-python tqdm pillow pennylane pennylane-qiskit \
image scipy regex cffi qasm2image pylatexenc tikz2graphml kaleidoscope plotly==4.14.1 jupyterlab --use-deprecated=legacy-resolver
# Install qiskit textbook
RUN cd $QISKIT_DIR && git clone https://github.com/Qiskit/qiskit-textbook
RUN cd qiskit-textbook && git checkout stable && pip install -r requirements.txt
# Optional, install pennylane QML
RUN python3 -m pip install pennylane --upgrade && \
python3 -m pip install pennylane-forest pennylane-qiskit pennylane-sf pennylane-qsharp \
pennylane-cirq pennylane-honeywell amazon-braket-pennylane-plugin qulacs pennylane-qulacs \
pennylane-orquestra pennylane-aqt pennylane_pq qsimcirq
# SET ROOT PERMISSION FOR ALL USERS
RUN chown -R $QISKIT_USER:$QISKIT_USER /home/$QISKIT_USER/
RUN usermod -aG sudo $QISKIT_USER
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# CHANGE TO NEW USER
USER $QISKIT_USER
# RUN JUPYTER ON PORT 8889
CMD [ "jupyter" , "notebook", "--ip=0.0.0.0", "--port=8889", "--notebook-dir=./qiskit-jupyter", "--no-browser" ]
# Get the jupyter token : docker logs -f <NAME_OF_THIS_IMAGE>
# This image can be run as (update the token value)
# docker run -p 8889:8889 -it --env QISKIT_API_TOKEN="your_api_token" <NAME_OF_THIS_IMAGE>:TAG