From b9a8c63aee561f63d96fb76a62141a6b84c33188 Mon Sep 17 00:00:00 2001 From: Patrick Jentsch Date: Fri, 6 Sep 2019 11:38:35 +0200 Subject: [PATCH] Dockerize the Application. --- Dockerfile | 23 ++++++--------- docker-compose.yml | 68 +++++++++++++++++++++----------------------- docker-entrypoint.sh | 10 +++---- opaque.py | 4 +-- 4 files changed, 46 insertions(+), 59 deletions(-) diff --git a/Dockerfile b/Dockerfile index b474e068..4f087961 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,12 @@ FROM python:3.6-alpine +EXPOSE 5000 + + +ENV FLASK_APP=opaque.py + + RUN apk add \ build-base \ postgresql-dev @@ -8,28 +14,15 @@ RUN apk add \ RUN adduser -D opaque USER opaque - - WORKDIR /home/opaque COPY app app -COPY migrations migrations -COPY config.py opaque.py ./ -COPY requirements.txt requirements.txt - - -ENV FLASK_APP=opaque.py - - +copy migrations migrations +COPY config.py opaque.py requirements.txt ./ RUN python -m venv venv && \ venv/bin/pip install -r requirements.txt COPY docker-entrypoint.sh /usr/local/bin/ - - -EXPOSE 5000 - - ENTRYPOINT ["docker-entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index 18e5575c..b2888e89 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,42 +1,38 @@ -version: '3.7' +version: '3' services: - web: - build: . - container_name: opaque_flask - image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque - volumes: - - .:/opaque - - $HOME/opaque_test:/home/compute/mnt/opaque + opaque: + container_name: opaque + depends_on: + - opaque_database + - opaque_redis env_file: - - .env - - .env_database + - opaque_database_env + - opaque_env + image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque:latest ports: - 5000:5000 - depends_on: - - db - links: - - db - command: bash flask-entrypoint.sh - daemon: - container_name: opaque_daemon - image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/daemon_opaque - network_mode: "host" - volumes: - - /home/stephan/Repos/own/opaque/data_dev.sqlite:/daemon/db/data_dev.sqlite - - $HOME/.docker/config.json:/root/.docker/config.json - depends_on: - - db - db: - container_name: opaque_db - image: postgres:11.5 - env_file: - - .env_database - ports: - - 5432:5432 - volumes: - - postgres_data:/var/lib/postgresql/data restart: always - -volumes: - postgres_data: + volumes: + - /opaque_storage:/opaque_storage + opaque_daemon: + container_name: opaque_daemon + depends_on: + - opaque_database + env_file: + - opaque_database_env + image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque_daemon:latest + restart: always + volumes: + - $HOME/.docker/config.json:/home/opaque_daemon/.docker/config.json + opaque_database: + container_name: opaque_database + env_file: opaque_database_env + image: postgres:alpine + restart: always + volumes: + - /opaque_database:/var/lib/postgresql/data + opaque_redis: + container_name: opaque_redis + image: redis:alpine + restart: always diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index b317cda4..c46e4a7b 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -2,14 +2,12 @@ if [ $# -eq 0 ] then - # If no argument is given, start Opaque venv/bin/python opaque.py else - if [[ $1 == "--create-db" ]] + if [[ $1 == "--setup-database" ]] then - source venv/bin/activate - flask db init - flask db upgrade - flask foo + venv/bin/python -m flask db init + venv/bin/python -m flask db upgrade + venv/bin/python -m flask insert-initial-database-entries fi fi diff --git a/opaque.py b/opaque.py index f0f2fc8d..53965327 100644 --- a/opaque.py +++ b/opaque.py @@ -28,8 +28,8 @@ def test(): unittest.TextTestRunner(verbosity=2).run(tests) -@app.cli.command() -def foo(): +@app.cli.command('insert-initial-database-entries') +def insert_initial_database_entries(): Role.insert_roles()