11# syntax=docker/dockerfile:1.3-labs
2- FROM python:3.10-slim-buster
2+ FROM python:3.10-slim-buster AS compile-image
3+ ARG PYTEZOS=0
4+ ENV POETRY_VIRTUALENVS_IN_PROJECT=true
5+ SHELL ["/bin/bash" , "-euxo" , "pipefail" , "-c" ]
36
4- ARG EXTRAS
5-
6- SHELL ["/bin/bash" , "-x" , "-v" , "-c" ]
77RUN <<eot
88 apt update
9- apt install -y --no-install-recommends make git sudo `if [[ $EXTRAS =~ "pytezos" ]]; then echo build-essential pkg-config libsodium-dev libsecp256k1-dev libgmp-dev; fi`
9+ apt install -y gcc make git `if [[ $PYTEZOS = "1" ]]; then echo build-essential pkg-config libsodium-dev libsecp256k1-dev libgmp-dev; fi`
10+
1011 pip install --no-cache-dir poetry
11- useradd -ms /bin/bash dipdup
12- mkdir /home/dipdup/source
13- rm -r /var/lib/apt/lists/* /var/log/*
12+
13+ mkdir -p /opt/dipdup
14+
15+ rm -r /var/log/* /var/lib/apt/lists/* /var/cache/* /var/lib/dpkg/status*
1416eot
1517
16- COPY --chown=dipdup Makefile pyproject.toml poetry.lock README.md /home/dipdup/source/
17- COPY --chown=dipdup inject_pyproject.sh /usr/bin/inject_pyproject.sh
18- WORKDIR /home/dipdup/source
18+ WORKDIR /opt/dipdup
19+ ENV PATH="/opt/dipdup/.venv/bin:$PATH"
20+
21+ COPY --chown=dipdup Makefile pyproject.toml poetry.lock README.md /opt/dipdup/
1922
2023RUN <<eot
2124 # We want to copy our code at the last layer but not to break poetry's "packages" section
22- mkdir -p /home/dipdup/source/src/dipdup
23- touch /home/dipdup/source/src/dipdup/__init__.py
24- poetry config virtualenvs.create false
25- make install DEV=0 EXTRAS="${EXTRAS}"
26- echo 'sudo /usr/bin/inject_pyproject.sh' >> /usr/bin/inject_pyproject
27- echo 'dipdup ALL = NOPASSWD: /usr/bin/inject_pyproject.sh' >> /etc/sudoers
28- chmod +x /usr/bin/inject_pyproject.sh
29- chmod +x /usr/bin/inject_pyproject
30- rm -r /root/.cache
25+ mkdir -p /opt/dipdup/src/dipdup
26+ touch /opt/dipdup/src/dipdup/__init__.py
27+
28+ make install DEV=0 PYTEZOS="${PYTEZOS}"
29+
30+ rm -r /root/.cache/
3131eot
3232
33- COPY --chown=dipdup . /home/dipdup/source
33+ FROM python:3.10-slim-buster AS build-image
34+ ARG PYTEZOS=0
35+ ENV POETRY_VIRTUALENVS_IN_PROJECT=true
36+ SHELL ["/bin/bash" , "-c" ]
3437
35- USER dipdup
36- RUN poetry config virtualenvs.create false
38+ RUN <<eot
39+ useradd -ms /bin/bash dipdup
40+ pip install --no-cache-dir poetry
41+
42+ apt update
43+ apt install -y --no-install-recommends git `if [[ $PYTEZOS = "1" ]]; then echo libsodium-dev libsecp256k1-dev libgmp-dev; fi`
3744
45+ rm -r /var/log/* /var/lib/apt/lists/* /var/cache/* /var/lib/dpkg/status*
46+ eot
47+
48+ USER dipdup
49+ ENV PATH="/opt/dipdup/.venv/bin:$PATH"
50+ ENV PYTHONPATH="/home/dipdup:/home/dipdup/src:/opt/dipdup/src:/opt/dipdup/lib/python3.10/site-packages:$PYTHONPATH"
3851WORKDIR /home/dipdup/
3952ENTRYPOINT ["dipdup" ]
4053CMD ["run" ]
54+
55+ COPY --chown=dipdup --chmod=0755 install_dependencies.sh /opt/dipdup/.venv/bin/install_dependencies
56+ COPY --chown=dipdup --chmod=0755 install_dependencies.sh /opt/dipdup/.venv/bin/inject_pyproject
57+ COPY --chown=dipdup --from=compile-image /opt/dipdup /opt/dipdup
58+ COPY --chown=dipdup . /opt/dipdup
0 commit comments