Skip to content
Snippets Groups Projects
Commit 427b8f1a authored by Benjamin Bertrand's avatar Benjamin Bertrand
Browse files

Switch to python-slim image

- requirements-to-freeze.txt is used to list only the needed packages
- requirements.txt is used to build a reproducible environment
- requirements-dev.txt is for testing and building the documentation
parent 7c98683d
No related branches found
No related tags found
No related merge requests found
......@@ -46,7 +46,8 @@ test:
services:
- postgres:10
- redis:4.0
before_script: []
before_script:
- pip install -r requirements-dev.txt
script:
- pytest --junitxml=junit.xml --cov-report xml:coverage.xml --cov=app -v
artifacts:
......@@ -97,7 +98,8 @@ pages:
<<: *runner_tags
stage: deploy
image: "$CONTAINER_RELEASE_IMAGE"
before_script: []
before_script:
- pip install -r requirements-dev.txt
script:
- sphinx-build -M html docs docs/_build
- mv docs/_build/html public
......
FROM registry.esss.lu.se/ics-docker/miniconda:4.5
FROM python:3.6-slim as base
USER root
WORKDIR /app
RUN chown conda:users /app
# Install Python dependencies in an intermediate image
# as some requires a compiler (uwsgi)
FROM base as builder
# Install dependencies required to compile some Python packages
# Taken from https://github.com/docker-library/python/blob/master/3.6/stretch/slim/Dockerfile
# For psycopg2: libpq-dev
# For pillow: libjpeg-dev libpng-dev libtiff-dev
RUN apt-get update \
&& apt-get install -yq --no-install-recommends \
gcc \
libbz2-dev \
libc6-dev \
libexpat1-dev \
libffi-dev \
libjpeg-dev \
libgdbm-dev \
liblzma-dev \
libncursesw5-dev \
libpng-dev \
libpq-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libtiff-dev \
make \
tk-dev \
wget \
xz-utils \
zlib1g-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt /requirements.txt
RUN python -m venv /venv \
&& . /venv/bin/activate \
&& pip install --no-cache-dir -r /requirements.txt
FROM base
USER conda
RUN groupadd -r -g 1000 csi \
&& useradd --no-log-init -r -g csi -u 1000 csi
# Install CSEntry requirements
COPY environment.yml /app/environment.yml
RUN conda env create -n csentry -f environment.yml \
&& rm -rf /opt/conda/pkgs/*
COPY --chown=csi:csi --from=builder /venv /venv
# Install libraries for psycopg2 and pillow
# Shall be the same as the one linked to when compiling in builder image!
RUN apt-get update \
&& apt-get install -yq --no-install-recommends \
libjpeg62-turbo \
libpng16-16 \
libtiff5 \
libpq5 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY --chown=csi:csi . /app/
WORKDIR /app
# Install the app
COPY . /app/
ENV PATH /venv/bin:$PATH
# activate the csentry environment
ENV PATH /opt/conda/envs/csentry/bin:$PATH
USER csi
name: csentry
channels:
- conda-forge
- defaults
dependencies:
- alabaster=0.7.10=py36_1
- alembic=0.9.6=py_0
- asn1crypto=0.22.0=py36_0
- attrs=17.4.0=py_0
- babel=2.5.1=py36_0
- blinker=1.4=py_0
- ca-certificates=2017.11.5=0
- certifi=2017.11.5=py36_0
- cffi=1.10.0=py36_0
- chardet=3.0.4=py36_0
- click=6.7=py36_0
- colorama=0.3.9=py36_0
- coverage=4.4.2=py36_0
- cryptography=2.0.3=py36_0
- dnspython=1.15.0=py_0
- docutils=0.14=py36_0
- email_validator=1.0.2=py_0
- factory_boy=2.10.0=py_0
- faker=0.8.1=py_0
- flask=0.12.2=py36_0
- flask-admin=1.5.0=py36_0
- flask-debugtoolbar=0.10.1=py36_0
- flask-login=0.4.0=py36_0
- flask-mail=0.9.1=py36_1
- flask-migrate=2.1.1=py36_0
- flask-sqlalchemy=2.3.2=py_0
- flask-wtf=0.14.2=py36_0
- freetype=2.7=2
- icu=58.2=0
- idna=2.6=py36_1
- imagesize=0.7.1=py36_0
- itsdangerous=0.24=py_2
- jansson=2.7=0
- jinja2=2.9.6=py36_0
- jpeg=9b=2
- krb5=1.14.2=0
- ldap3=2.3=py36_0
- libffi=3.2.1=3
- libpng=1.6.28=2
- libpq=9.6.3=0
- libtiff=4.0.7=1
- libxml2=2.9.5=2
- mako=1.0.7=py36_0
- markupsafe=1.0=py36_0
- ncurses=5.9=10
- olefile=0.44=py36_0
- openssl=1.0.2l=0
- pcre=8.39=0
- pillow=4.3.0=py36_1
- pip=9.0.1=py36_0
- pluggy=0.6.0=py_0
- psycopg2=2.7.3.2=py36_0
- py=1.5.2=py_0
- pyasn1=0.3.7=py_0
- pycparser=2.18=py36_0
- pycrypto=2.6.1=py36_1
- pygments=2.2.0=py36_0
- pyjwt=1.5.3=py_0
- pyopenssl=17.4.0=py36_0
- pysocks=1.6.8=py36_1
- pytest=3.4.2=py36_0
- pytest-cov=2.5.1=py36_0
- python=3.6.3=1
- python-dateutil=2.6.1=py36_0
- python-editor=1.0.3=py36_0
- pytz=2017.3=py_2
- pyyaml=3.12=py36_1
- qrcode=5.3=py36_0
- readline=6.2=0
- redis-py=2.10.6=py_0
- requests=2.18.4=py36_1
- setuptools=36.7.2=py36_0
- six=1.11.0=py36_1
- snowballstemmer=1.2.1=py36_0
- sphinx=1.6.7=py36_0
- sphinxcontrib-websupport=1.0.1=py36_0
- sqlalchemy=1.1.13=py36_0
- sqlite=3.13.0=1
- tk=8.5.19=2
- typing=3.6.2=py36_0
- urllib3=1.22=py36_0
- uwsgi=2.0.15=py36_2
- werkzeug=0.12.2=py_1
- wheel=0.30.0=py36_2
- whitenoise=3.3.1=py36_0
- wtforms=2.1=py36_0
- xz=5.2.3=0
- yaml=0.1.6=0
- zlib=1.2.11=0
- ecdsa=0.13=py36_0
- pip:
- ansible-tower-cli==3.2.1
- arrow==0.12.1
- dominate==2.3.1
- email-validator==1.0.2
- flask-caching==1.3.3
- flask-jwt-extended==3.4.0
- flask-ldap3-login==0.9.13
- flask-redis==0.3.0
- flask-session==0.3.1
- inflection==0.3.1
- pytest-factoryboy==2.0.1
- rq==0.10.0
- rq-dashboard==0.3.10
- sphinxcontrib-httpdomain==1.6.0
- sqlalchemy-citext==1.3.post0
- sqlalchemy-continuum==1.3.3
- sqlalchemy-utils==0.32.21
- ukpostcodeparser==1.1.1
- visitor==0.1.3
sphinx
sphinxcontrib-httpdomain
coverage
factory_boy
pytest
pytest-cov
pytest-factoryboy
flask>=1.0.0
flask-admin
flask-caching
flask-debugtoolbar
flask-jwt-extended
flask-ldap3-login
flask-login
flask-mail
flask-migrate
flask-redis
flask-session
flask-sqlalchemy
flask-wtf
pillow
psycopg2
pyjwt
python-dateutil
pyyaml
qrcode
uwsgi
whitenoise
ansible-tower-cli
rq
rq-dashboard
sqlalchemy-citext
sqlalchemy-continuum
alembic==1.0.0
ansible-tower-cli==3.3.0
arrow==0.12.1
blinker==1.4
certifi==2018.4.16
chardet==3.0.4
click==6.7
colorama==0.3.9
Flask==1.0.2
Flask-Admin==1.5.1
Flask-Caching==1.4.0
Flask-DebugToolbar==0.10.1
Flask-JWT-Extended==3.12.0
flask-ldap3-login==0.9.14
Flask-Login==0.4.1
Flask-Mail==0.9.1
Flask-Migrate==2.2.1
Flask-Redis==0.3.0
Flask-Session==0.3.1
Flask-SQLAlchemy==2.3.2
Flask-WTF==0.14.2
idna==2.7
itsdangerous==0.24
Jinja2==2.10
ldap3==2.5.1
Mako==1.0.7
MarkupSafe==1.0
Pillow==5.2.0
psycopg2==2.7.5
pyasn1==0.4.4
PyJWT==1.6.4
python-dateutil==2.7.3
python-editor==1.0.3
PyYAML==3.13
qrcode==6.0
redis==2.10.6
requests==2.19.1
rq==0.12.0
rq-dashboard==0.3.12
six==1.11.0
SQLAlchemy==1.2.10
sqlalchemy-citext==1.3.post0
SQLAlchemy-Continuum==1.3.6
SQLAlchemy-Utils==0.33.3
urllib3==1.23
uWSGI==2.0.17.1
Werkzeug==0.14.1
whitenoise==3.3.1
WTForms==2.2.1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment