Skip to content

Commit

Permalink
update Docker frontend container to run migrate.py prior to starting …
Browse files Browse the repository at this point in the history
…gunicorn; allow some gunicorn setting in .env file

also added defaults for those settings in case someone forgets to update their .env file.
  • Loading branch information
dale-wahl committed Feb 6, 2024
1 parent aeb8090 commit 7e02e36
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 5 deletions.
8 changes: 8 additions & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,11 @@ DOCKER_DB_VOL=4cat_4cat_db
DOCKER_DATA_VOL=4cat_4cat_data
DOCKER_CONFIG_VOL=4cat_4cat_share
DOCKER_LOGS_VOL=4cat_4cat_logs

# Gunicorn settings
worker_tmp_dir=/dev/shm
workers=4
threads=4
worker_class=gthread
log_level=debug

4 changes: 3 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ services:
image: digitalmethodsinitiative/4cat:${DOCKER_TAG}
container_name: 4cat_frontend
restart: unless-stopped
env_file:
- .env
depends_on:
- db
- backend
Expand All @@ -49,7 +51,7 @@ services:
- 4cat_data:/usr/src/app/data/
- 4cat_config:/usr/src/app/config/
- 4cat_logs:/usr/src/app/logs/
command: ["docker/wait-for-backend.sh", "gunicorn", "--worker-tmp-dir", "/dev/shm", "--workers", "2", "--threads", "4", "--worker-class", "gthread", "--access-logfile", "/usr/src/app/logs/access_gunicorn.log", "--log-level", "info", "--bind", "0.0.0.0:5000", "webtool:app"]
command: ["docker/wait-for-backend.sh"]

volumes:
4cat_db:
Expand Down
12 changes: 11 additions & 1 deletion docker-compose_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ services:
- POSTGRES_HOST_AUTH_METHOD=${POSTGRES_HOST_AUTH_METHOD}
volumes:
- ./data/postgres/:/var/lib/postgresql/data/
# - 4cat_db:/var/lib/postgresql/data/
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER}" ]
interval: 5s
Expand All @@ -34,11 +35,17 @@ services:
- ./data/datasets/:/usr/src/app/data/
- ./data/config/:/usr/src/app/config/
- ./data/logs/:/usr/src/app/logs/
# - 4cat_data:/usr/src/app/data/
# - 4cat_config:/usr/src/app/config/
# - 4cat_logs:/usr/src/app/logs/

entrypoint: docker/docker-entrypoint.sh

frontend:
image: 4cat
container_name: 4cat_frontend
env_file:
- .env
depends_on:
- db
- backend
Expand All @@ -49,7 +56,10 @@ services:
- ./data/datasets/:/usr/src/app/data/
- ./data/config/:/usr/src/app/config/
- ./data/logs/:/usr/src/app/logs/
command: ["docker/wait-for-backend.sh", "gunicorn", "--worker-tmp-dir", "/dev/shm", "--workers", "2", "--threads", "4", "--worker-class", "gthread", "--access-logfile", "/usr/src/app/logs/access_gunicorn.log", "--log-level", "info", "--bind", "0.0.0.0:5000", "webtool:app"]
# - 4cat_data:/usr/src/app/data/
# - 4cat_config:/usr/src/app/config/
# - 4cat_logs:/usr/src/app/logs/
command: ["docker/wait-for-backend.sh"]

volumes:
4cat_db:
Expand Down
4 changes: 3 additions & 1 deletion docker-compose_public_ip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ services:
image: digitalmethodsinitiative/4cat:${DOCKER_TAG}
container_name: 4cat_frontend
restart: unless-stopped
env_file:
- .env
depends_on:
- db
- backend
Expand All @@ -59,7 +61,7 @@ services:
- 4cat_data:/usr/src/app/data/
- 4cat_config:/usr/src/app/config/
- 4cat_logs:/usr/src/app/logs/
command: ["docker/wait-for-backend.sh", "gunicorn", "--worker-tmp-dir", "/dev/shm", "--workers", "2", "--threads", "4", "--worker-class", "gthread", "--access-logfile", "/usr/src/app/logs/access_gunicorn.log", "--log-level", "info", "--bind", "0.0.0.0:5000", "webtool:app"]
command: ["docker/wait-for-backend.sh"]

volumes:
4cat_db:
Expand Down
15 changes: 13 additions & 2 deletions docker/wait-for-backend.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,16 @@ until python3 -m docker.wait-for-backend; do
done

>&2 echo "Backend is up"
sleep 2
exec "$@"

# Run migrate to ensure 4CAT is up to date if version file has changed
python3 -m helper-scripts.migrate.py -y --component frontend --current-version config/.current-version-frontend

# Default values for Gunicorn (if not provided by environment)
: "${worker_tmp_dir:=/dev/shm}"
: "${workers:=4}"
: "${threads:=4}"
: "${worker_class:=gthread}"
: "${log_level:=info}"

>&2 echo "Starting Gunicorn:"
exec `gunicorn --worker-tmp-dir $worker_tmp_dir --workers $workers --threads $threads --worker-class $worker_class --access-logfile /usr/src/app/logs/access_gunicorn.log --log-level $log_level --bind 0.0.0.0:5000 webtool:app`

0 comments on commit 7e02e36

Please sign in to comment.