FROM python:3.8.6-slim-buster as compile WORKDIR /usr/src/cic-eth RUN apt-get update && \ apt install -y gcc gnupg libpq-dev wget make g++ gnupg bash procps git #RUN python -m venv venv && . venv/bin/activate ARG pip_extra_index_url_flag='--index https://pypi.org/simple --extra-index-url https://pip.grassrootseconomics.net:8433' RUN /usr/local/bin/python -m pip install --upgrade pip RUN pip install semver # TODO use a packaging style that lets us copy requirments only ie. pip-tools COPY cic-eth/ . RUN pip install $pip_extra_index_url_flag . RUN pip install $pip_extra_index_url_flag pycryptodome==3.10.1 # --- TEST IMAGE --- FROM python:3.8.6-slim-buster as test RUN apt-get update && \ apt install -y gcc gnupg libpq-dev wget make g++ gnupg bash procps git WORKDIR /usr/src/cic-eth RUN /usr/local/bin/python -m pip install --upgrade pip COPY --from=compile /usr/local/bin/ /usr/local/bin/ COPY --from=compile /usr/local/lib/python3.8/site-packages/ \ /usr/local/lib/python3.8/site-packages/ # TODO we could use venv inside container to isolate the system and app deps further # COPY --from=compile /usr/src/cic-eth/ . # RUN . venv/bin/activate COPY cic-eth/test_requirements.txt . RUN pip install $pip_extra_index_url_flag -r test_requirements.txt ENV PYTHONPATH . ENTRYPOINT ["pytest"] # --- RUNTIME --- FROM python:3.8.6-slim-buster as runtime RUN apt-get update && \ apt install -y gnupg libpq-dev procps WORKDIR /usr/src/cic-eth COPY --from=compile /usr/local/bin/ /usr/local/bin/ COPY --from=compile /usr/local/lib/python3.8/site-packages/ \ /usr/local/lib/python3.8/site-packages/ COPY cic-eth/docker/* ./ RUN chmod 755 *.sh COPY cic-eth/scripts/ scripts/ # # ini files in config directory defines the configurable parameters for the application # # they can all be overridden by environment variables # # to generate a list of environment variables from configuration, use: confini-dump -z (executable provided by confini package) COPY cic-eth/config/ /usr/local/etc/cic-eth/ COPY cic-eth/cic_eth/db/migrations/ /usr/local/share/cic-eth/alembic/ COPY cic-eth/crypto_dev_signer_config/ /usr/local/etc/crypto-dev-signer/ COPY util/liveness/health.sh /usr/local/bin/health.sh