diff --git a/Dockerfile b/Dockerfile index e34a3eabc607a3acdb71efb14191b65ccd2c735e..3a600ac34e850ee3bbdde7b73b8ab90c1b51066d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,13 +4,6 @@ RUN groupadd -r ics && useradd -r -g ics ics WORKDIR /app -# uwsgi is currently not available on conda-forge -# for Python 3.6 - it needs to be installed with pip -# and that requires gcc -RUN apt-get update && apt-get install -y \ - gcc \ - && rm -rf /var/lib/apt/lists/* - # Install CSEntry requirements COPY environment.yml /app/environment.yml RUN conda config --add channels conda-forge \ diff --git a/README.rst b/README.rst index 6b5cc57f871238f82ba539fb05e4adedecce9602..7f015c2d0a409af267127f89e7e5f82174f803be 100644 --- a/README.rst +++ b/README.rst @@ -76,3 +76,16 @@ To restore the database:: $ gunzip -c csentry_db.dump.g | docker run --rm --link csentry_postgres:postgres --net csentry_default -e PGPASSWORD="<csentry_password>" -i postgres:10 psql -h postgres -U csentry csentry_db + + +Dependencies +------------ + +The initial dependencies were generated using:: + + $ docker run --rm -it -v $(pwd):/app continuumio/miniconda3:latest bash + $ conda config --add channels conda-forge + $ conda create -n csentry python=3.6 flask alembic flask-debugtoolbar flask-login flask-sqlalchemy flask-wtf pillow psycopg2 pytest pytest-cov qrcode whitenoise factory_boy flask-admin pyjwt ldap3 flask-mail flask-migrate flask-jwt-extended + $ source activate csentry + $ pip install flask-ldap3-login sqlalchemy-citext sqlalchemy-continuum pytest-factoryboy git+https://github.com/beenje/flask-bootstrap@4.0.0-beta.1.dev1 + $ conda env export > /app/environment.yml diff --git a/environment.yml b/environment.yml index 9ab868a5a29217ceb16d432ca68440f01c64ad04..60f3fc3614b31c7ceed4c3eb4380c3d1db1620d7 100644 --- a/environment.yml +++ b/environment.yml @@ -1,69 +1,84 @@ name: csentry -channels: !!python/tuple +channels: - conda-forge - defaults dependencies: -- conda-forge::alembic=0.9.3=py36_0 -- conda-forge::ca-certificates=2017.4.17=0 -- conda-forge::certifi=2017.4.17=py36_0 -- conda-forge::click=6.7=py36_0 -- conda-forge::colorama=0.3.9=py36_0 -- conda-forge::coverage=4.4.1=py36_0 -- conda-forge::flask=0.12.2=py36_0 -- conda-forge::flask-debugtoolbar=0.10.1=py36_0 -- conda-forge::flask-login=0.4.0=py36_0 -- conda-forge::flask-sqlalchemy=2.2=py36_1 -- conda-forge::flask-wtf=0.14.2=py36_0 -- conda-forge::freetype=2.7=1 -- conda-forge::itsdangerous=0.24=py36_1 -- conda-forge::jinja2=2.9.5=py36_0 -- conda-forge::jpeg=9b=0 -- conda-forge::krb5=1.14.2=0 -- conda-forge::libpng=1.6.28=0 -- conda-forge::libpq=9.5.4=4 -- conda-forge::libtiff=4.0.6=7 -- conda-forge::mako=1.0.7=py36_0 -- conda-forge::markupsafe=1.0=py36_0 -- conda-forge::ncurses=5.9=10 -- conda-forge::olefile=0.44=py36_0 -- conda-forge::openssl=1.0.2l=0 -- conda-forge::pillow=4.2.1=py36_0 -- conda-forge::pip=9.0.1=py36_0 -- conda-forge::psycopg2=2.7.1=py36_0 -- conda-forge::py=1.4.34=py36_0 -- conda-forge::pytest=3.2.1=py36_0 -- conda-forge::pytest-cov=2.5.1=py36_0 -- conda-forge::python=3.6.1=3 -- conda-forge::python-dateutil=2.6.0=py36_0 -- conda-forge::python-editor=1.0.3=py36_0 -- conda-forge::qrcode=5.3=py36_0 -- conda-forge::readline=6.2=0 -- conda-forge::setuptools=33.1.1=py36_0 -- conda-forge::six=1.10.0=py36_1 -- conda-forge::sqlalchemy=1.1.11=py36_0 -- conda-forge::sqlite=3.13.0=1 -- conda-forge::tk=8.5.19=1 -- conda-forge::werkzeug=0.12.2=py36_0 -- conda-forge::wheel=0.29.0=py36_0 -- conda-forge::whitenoise=3.3.0=py36_0 -- conda-forge::wtforms=2.1=py36_0 -- conda-forge::xz=5.2.2=0 -- conda-forge::zlib=1.2.11=0 +- alembic=0.9.6=py_0 +- asn1crypto=0.22.0=py36_0 +- blinker=1.4=py36_0 +- ca-certificates=2017.11.5=0 +- certifi=2017.11.5=py36_0 +- cffi=1.10.0=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 +- email_validator=1.0.2=py_0 +- factory_boy=2.9.2=py36_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-jwt-extended=3.3.1=py_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 +- idna=2.6=py36_1 +- itsdangerous=0.24=py_2 +- 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 +- 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 +- pillow=4.3.0=py36_1 +- pip=9.0.1=py36_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 +- pyjwt=1.5.3=py_0 +- pytest=3.2.5=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 +- qrcode=5.3=py36_0 +- readline=6.2=0 +- setuptools=36.7.2=py36_0 +- six=1.11.0=py36_1 +- sqlalchemy=1.1.13=py36_0 +- sqlite=3.13.0=1 +- tk=8.5.19=2 +- werkzeug=0.12.2=py_1 +- wheel=0.30.0=py_1 +- whitenoise=3.3.1=py36_0 +- wtforms=2.1=py36_0 +- xz=5.2.3=0 +- zlib=1.2.11=0 +- ecdsa=0.13=py36_0 - pip: - - blinker==1.4 - dominate==2.3.1 - - flask-admin==1.5.0 + - email-validator==1.0.2 + - factory-boy==2.9.2 - git+https://github.com/beenje/flask-bootstrap@4.0.0-beta.1.dev1 - - flask-jwt-extended==3.1.1 - flask-ldap3-login==0.9.13 - - flask-mail==0.9.1 - - flask-migrate==2.0.4 - - flask-script==2.0.5 - - ldap3==2.2.4 - - pyasn1==0.2.3 - - pyjwt==1.4.2 + - inflection==0.3.1 + - pytest-factoryboy==1.3.1 - sqlalchemy-citext==1.3.post0 - - sqlalchemy-continuum==1.3.1 - - sqlalchemy-utils==0.32.14 - - uwsgi==2.0.15 + - sqlalchemy-continuum==1.3.3 + - sqlalchemy-utils==0.32.21 + - ukpostcodeparser==1.1.1 - visitor==0.1.3