From 28cef0441126bcf1e760d08e4f25ed474a5d889f Mon Sep 17 00:00:00 2001 From: David Slusser Date: Thu, 21 Aug 2025 20:35:03 -0700 Subject: [PATCH 1/2] cleanup docker files --- .gitignore | 1 + .../web/templates/web/full/about.html | 0 src/docker/docker-compose.yaml | 24 ++------- src/docker/local-compose.yaml | 29 ---------- src/docker/traefik-compose.yaml | 54 ------------------- src/envs/.env.docker-compose.template | 19 +++++++ 6 files changed, 24 insertions(+), 103 deletions(-) create mode 100644 src/django_project/web/templates/web/full/about.html delete mode 100644 src/docker/local-compose.yaml delete mode 100644 src/docker/traefik-compose.yaml create mode 100644 src/envs/.env.docker-compose.template diff --git a/.gitignore b/.gitignore index fea47b0..9e51522 100644 --- a/.gitignore +++ b/.gitignore @@ -69,6 +69,7 @@ target/ local_test src/envs/* !src/envs/.env.template +!src/envs/.env.docker-compose.template src/logs django_project/yarn.lock django_project/__version__.py diff --git a/src/django_project/web/templates/web/full/about.html b/src/django_project/web/templates/web/full/about.html new file mode 100644 index 0000000..e69de29 diff --git a/src/docker/docker-compose.yaml b/src/docker/docker-compose.yaml index 1880182..180ecf3 100644 --- a/src/docker/docker-compose.yaml +++ b/src/docker/docker-compose.yaml @@ -1,29 +1,15 @@ -networks: - web: - external: true - services: django: - container_name: django image: ghcr.io/spokanetech/spokanepythonweb:latest + container_name: django build: context: ../.. dockerfile: src/docker/Dockerfile env_file: - ../envs/.env.docker-compose - command: "./entrypoint.sh" - labels: - - "traefik.enable=true" - - # Router for HTTPS - - "traefik.http.routers.django.rule=Host(`davidslusser.website`) || Host(`www.davidslusser.website`)" - - "traefik.http.routers.django.entrypoints=websecure" - - "traefik.http.routers.django.tls.certresolver=myresolver" - - # Service settings - - "traefik.http.services.django.loadbalancer.server.port=8000" - networks: - - web + command: ./entrypoint.sh + ports: + - "8000:8000" depends_on: - db restart: unless-stopped @@ -37,8 +23,6 @@ services: - "5432:5432" env_file: - ../envs/.env.docker-compose - networks: - - web restart: unless-stopped volumes: diff --git a/src/docker/local-compose.yaml b/src/docker/local-compose.yaml deleted file mode 100644 index 180ecf3..0000000 --- a/src/docker/local-compose.yaml +++ /dev/null @@ -1,29 +0,0 @@ -services: - django: - image: ghcr.io/spokanetech/spokanepythonweb:latest - container_name: django - build: - context: ../.. - dockerfile: src/docker/Dockerfile - env_file: - - ../envs/.env.docker-compose - command: ./entrypoint.sh - ports: - - "8000:8000" - depends_on: - - db - restart: unless-stopped - - db: - image: postgres:17 - container_name: postgres - volumes: - - spokanepython_postgres:/var/lib/postgresql/data - ports: - - "5432:5432" - env_file: - - ../envs/.env.docker-compose - restart: unless-stopped - -volumes: - spokanepython_postgres: diff --git a/src/docker/traefik-compose.yaml b/src/docker/traefik-compose.yaml deleted file mode 100644 index c38b4bb..0000000 --- a/src/docker/traefik-compose.yaml +++ /dev/null @@ -1,54 +0,0 @@ -networks: - web: - external: true - -services: - traefik: - image: traefik:v3.0 - container_name: traefik - command: - - "--api.dashboard=true" - - "--providers.docker=true" - - "--providers.docker.exposedbydefault=false" - - # Entry points - - "--entrypoints.web.address=:80" - - "--entrypoints.websecure.address=:443" - - # Redirect HTTP to HTTPS - - "--entrypoints.web.http.redirections.entrypoint.to=websecure" - - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - - # Let's Encrypt - - "--certificatesresolvers.myresolver.acme.httpchallenge=true" - - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" - - "--certificatesresolvers.myresolver.acme.email=admin@davidslusser.website" - - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" - - ports: - - "80:80" - - "443:443" - - "8000:8000" - - volumes: - - "/var/run/docker.sock:/var/run/docker.sock:ro" - - "letsencrypt:/letsencrypt" - - networks: - - web - restart: unless-stopped - - labels: - - "traefik.enable=true" - - # Dashboard route - - "traefik.http.routers.traefik.rule=Host(`traefik.davidslusser.website`)" - - "traefik.http.routers.traefik.service=api@internal" - - "traefik.http.routers.traefik.entrypoints=websecure" - - "traefik.http.routers.traefik.tls.certresolver=myresolver" - # Auth middleware for dashboard - - "traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_DASH_AUTH}" - - "traefik.http.routers.traefik.middlewares=traefik-auth" - -volumes: - letsencrypt: diff --git a/src/envs/.env.docker-compose.template b/src/envs/.env.docker-compose.template new file mode 100644 index 0000000..8c3bd80 --- /dev/null +++ b/src/envs/.env.docker-compose.template @@ -0,0 +1,19 @@ +DEBUG=False +SECRET_KEY= +ALLOWED_HOSTS=localhost,127.0.0.1 +INTERNAL_IPS=localhost,127.0.0.1 +DEPLOYMENT_ENV=local +DJANGO_SETTINGS_MODULE=core.settings +LOG_PATH=/var/log/web +DB_ENGINE=django.db.backends.postgresql +DB_NAME=web +DB_USER= +DB_PASSWORD= +DB_HOST=db +DB_PORT=5432 +PROJECT_NAME=web +POSTGRES_USER= +POSTGRES_PASSWORD= +POSTGRES_DB=web +DJANGO_ADMIN_USERNAME= +DJANGO_ADMIN_PASSWORD= From ac553c13588c7d39f2e9a06422c69d3f228bb5e4 Mon Sep 17 00:00:00 2001 From: David Slusser Date: Thu, 21 Aug 2025 20:57:25 -0700 Subject: [PATCH 2/2] adding examples in compose template --- src/envs/.env.docker-compose.template | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/envs/.env.docker-compose.template b/src/envs/.env.docker-compose.template index 8c3bd80..96a9caf 100644 --- a/src/envs/.env.docker-compose.template +++ b/src/envs/.env.docker-compose.template @@ -1,5 +1,5 @@ -DEBUG=False -SECRET_KEY= +DEBUG=True +SECRET_KEY=changeme-in-production # TODO: Replace with a secure random value before deployment ALLOWED_HOSTS=localhost,127.0.0.1 INTERNAL_IPS=localhost,127.0.0.1 DEPLOYMENT_ENV=local @@ -7,13 +7,13 @@ DJANGO_SETTINGS_MODULE=core.settings LOG_PATH=/var/log/web DB_ENGINE=django.db.backends.postgresql DB_NAME=web -DB_USER= -DB_PASSWORD= +DB_USER=webuser # Example: webuser +DB_PASSWORD=changeme # Example: strongpassword DB_HOST=db DB_PORT=5432 PROJECT_NAME=web -POSTGRES_USER= -POSTGRES_PASSWORD= +POSTGRES_USER=webuser # Example: webuser +POSTGRES_PASSWORD=changeme # Example: strongpassword POSTGRES_DB=web -DJANGO_ADMIN_USERNAME= -DJANGO_ADMIN_PASSWORD= +DJANGO_ADMIN_USERNAME=admin # Example: admin +DJANGO_ADMIN_PASSWORD=changeme # Example: strongpassword