From 6626cd90eca97513f4f7c81ff4f4fdb8060ec120 Mon Sep 17 00:00:00 2001 From: LukeVader-IV Date: Wed, 9 Jul 2025 20:42:41 +0200 Subject: [PATCH] Change docker compose env vars Previously, each container would be handed all the env vars int the .env file. This is bad practice for a variety of reasons. This commit changes it so the docker compose file specified the env file for each container. the benefits: - less env vars to be set by the end user - containers are only given vars relevant to them - when running docker compose up, only containers affected by changed vars are restarted --- .env.example | 15 +++++---------- docker-compose.yml | 30 ++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/.env.example b/.env.example index 8a923ae..6c0826b 100644 --- a/.env.example +++ b/.env.example @@ -1,11 +1,9 @@ # 🌐 Frontend -PUBLIC_SERVER_URL=http://server:8000 # PLEASE DON'T CHANGE :) - Should be the service name of the backend with port 8000, even if you change the port in the backend service. Only change if you are using a custom more complex setup. -ORIGIN=http://localhost:8015 +FRONTEND_URL=http://localhost:8014 # URL that is allowed to be used for accessing the frontend BODY_SIZE_LIMIT=Infinity -FRONTEND_PORT=8015 +FRONTEND_PORT=8014 # port used in the internal network (outside docker) # 🐘 PostgreSQL Database -PGHOST=db POSTGRES_DB=database POSTGRES_USER=adventure POSTGRES_PASSWORD=changeme123 @@ -15,11 +13,8 @@ SECRET_KEY=changeme123 DJANGO_ADMIN_USERNAME=admin DJANGO_ADMIN_PASSWORD=admin DJANGO_ADMIN_EMAIL=admin@example.com -PUBLIC_URL=http://localhost:8016 # Match the outward port, used for the creation of image urls -CSRF_TRUSTED_ORIGINS=http://localhost:8016,http://localhost:8015 -DEBUG=False -FRONTEND_URL=http://localhost:8015 # Used for email generation. This should be the url of the frontend -BACKEND_PORT=8016 +BACKEND_URL=http://localhost:8017 # URL that is allowed to be used for accessing the backend, used for the creation of image urls +BACKEND_PORT=8017 # port exposed to the internal network (outside docker) # Optional: use Google Maps integration # https://adventurelog.app/docs/configuration/google_maps_integration.html @@ -44,4 +39,4 @@ DISABLE_REGISTRATION=False # Optional: Use Umami for analytics # https://adventurelog.app/docs/configuration/analytics.html # PUBLIC_UMAMI_SRC=https://cloud.umami.is/script.js # If you are using the hosted version of Umami -# PUBLIC_UMAMI_WEBSITE_ID= \ No newline at end of file +# PUBLIC_UMAMI_WEBSITE_ID= diff --git a/docker-compose.yml b/docker-compose.yml index 034ec06..e1450ac 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,11 @@ services: image: ghcr.io/seanmorley15/adventurelog-frontend:latest container_name: adventurelog-frontend restart: unless-stopped - env_file: .env + environment: + - PUBLIC_SERVER_URL=http://server:8000 # PLEASE DON'T CHANGE :) - Should be the service name of the backend with port 8000, even if you change the port in the backend service. Only change if you are using a custom more complex setup. + - ORIGIN=${FRONTENT_URL:-http://localhost:8015} + - BODY_SIZE_LIMIT=${BODY_SIZE_LIMIT:-Infinity} + #- FRONTEND_PORT=${FRONTEND_PORT=:-8015} ports: - "${FRONTEND_PORT:-8015}:3000" depends_on: @@ -14,16 +18,34 @@ services: image: postgis/postgis:16-3.5 container_name: adventurelog-db restart: unless-stopped - env_file: .env + environment: + - POSTGRES_DB=${POSTGRES_DB:-database} + - POSTGRES_USER=${POSTGRES_USER:-adventure} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-changeme123} volumes: - postgres_data:/var/lib/postgresql/data/ server: #build: ./backend/ - image: ghcr.io/seanmorley15/adventurelog-backend:latest + #image: ghcr.io/seanmorley15/adventurelog-backend:latest + image: 9f0471e8d7f872adf81dc41c9296f99fbadac01edb26e container_name: adventurelog-backend restart: unless-stopped - env_file: .env + environment: + - PGHOST=db + - POSTGRES_DB=${POSTGRES_DB:-database} + - POSTGRES_USER=${POSTGRES_USER:-adventure} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-changeme123} + - SECRET_KEY=${SECRET_KEY:-changeme123} + - DJANGO_ADMIN_USERNAME=${DJANGO_ADMIN_USERNAME:-admin} + - DJANGO_ADMIN_PASSWORD=${DJANGO_ADMIN_PASSWORD:-admin} + - DJANGO_ADMIN_EMAIL=${DJANGO_ADMIN_EMAIL:-admin@example.com} + - PUBLIC_URL=${BACKEND_URL:-http://localhost:8016} + - CSRF_TRUSTED_ORIGINS=${FRONTEND_URL:-http://localhost:8015},${BACKEND_URL:-http://localhost:8016} + - DEBUG=False + - FRONTEND_URL=${FRONTEND_URL:-http://localhost:8015} # Used for email generation. This should be the url of the frontend + - BACKEND_PORT=${BACKEND_PORT:-8016} + ports: - "${BACKEND_PORT:-8016}:80" depends_on: