Update docker-compose.yml with all environment variables and PostgreSQL

Major changes:
- Switch from MariaDB to PostgreSQL 16
- Add all required environment variables to web service:
  - SECRET_KEY, DEBUG, ALLOWED_HOSTS
  - CSRF_TRUSTED_ORIGINS, CORS_ALLOWED_ORIGINS
  - Email configuration (HOST, PORT, USER, PASSWORD, TLS)
  - Gunicorn settings (WORKERS, TIMEOUT)
- Add SECRET_KEY to celery services (required for Django)
- Update all services to depend on 'postgres' instead of 'mariadb'
- Update DATABASE_URL to use PostgreSQL format
- Update .env.docker.example to reflect PostgreSQL and add WEB_PORT

All environment variables now properly declared in compose file
with ${VAR} syntax for Portainer/Docker compatibility.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Keith Smith
2025-12-26 17:13:12 -07:00
co-authored by Claude Sonnet 4.5
parent 695109e447
commit 0459ab7456
2 changed files with 49 additions and 21 deletions
+9 -4
View File
@@ -27,15 +27,12 @@ CSRF_TRUSTED_ORIGINS=https://yourdomain.com
SITE_DOMAIN=yourdomain.com
# ===================================================================
# Database Configuration (MariaDB)
# Database Configuration (PostgreSQL)
# ===================================================================
DB_NAME=keepitgoing
DB_USER=keepitgoing
DB_PASSWORD=CHANGE_ME_STRONG_DATABASE_PASSWORD
DB_ROOT_PASSWORD=CHANGE_ME_STRONG_ROOT_PASSWORD
DB_HOST=mariadb
DB_PORT=3306
# ===================================================================
# Redis Configuration
@@ -101,6 +98,14 @@ CORS_ALLOWED_ORIGINS=https://yourdomain.com
SAAS_MODE=False
# ===================================================================
# Web Server Configuration
# ===================================================================
# Port to expose the web service on (default: 8000)
# Change this if port 8000 is already in use
WEB_PORT=8000
# ===================================================================
# Gunicorn Configuration
# ===================================================================
+40 -17
View File
@@ -2,25 +2,22 @@ version: '3.8'
services:
# =================================================================
# MariaDB Database Service
# PostgreSQL Database Service
# =================================================================
mariadb:
image: mariadb:11.2
postgres:
image: postgres:16-alpine
container_name: keepitgoing-db
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_NAME:-keepitgoing}
MYSQL_USER: ${DB_USER:-keepitgoing}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
POSTGRES_DB: ${DB_NAME:-keepitgoing}
POSTGRES_USER: ${DB_USER:-keepitgoing}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- db_data:/var/lib/mysql
- db_data:/var/lib/postgresql/data
networks:
- backend
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-keepitgoing}"]
interval: 10s
timeout: 5s
retries: 5
@@ -54,9 +51,33 @@ services:
container_name: keepitgoing-web
restart: unless-stopped
environment:
# Django Settings
DJANGO_SETTINGS_MODULE: config.settings.selfhosted
DATABASE_URL: mysql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@mariadb:3306/${DB_NAME:-keepitgoing}
SECRET_KEY: ${SECRET_KEY}
DEBUG: ${DEBUG:-False}
ALLOWED_HOSTS: ${ALLOWED_HOSTS:-localhost}
# Security
CSRF_TRUSTED_ORIGINS: ${CSRF_TRUSTED_ORIGINS:-http://localhost:8000}
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-http://localhost:8000}
# Database
DATABASE_URL: postgresql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@postgres:5432/${DB_NAME:-keepitgoing}
# Redis/Celery
REDIS_URL: redis://redis:6379/0
# Email
EMAIL_HOST: ${EMAIL_HOST:-}
EMAIL_PORT: ${EMAIL_PORT:-587}
EMAIL_HOST_USER: ${EMAIL_HOST_USER:-}
EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD:-}
EMAIL_USE_TLS: ${EMAIL_USE_TLS:-True}
DEFAULT_FROM_EMAIL: ${DEFAULT_FROM_EMAIL:-noreply@localhost}
# Gunicorn
GUNICORN_WORKERS: ${GUNICORN_WORKERS:-3}
GUNICORN_TIMEOUT: ${GUNICORN_TIMEOUT:-60}
volumes:
- ./media:/app/media
- static_files:/app/staticfiles
@@ -66,7 +87,7 @@ services:
- frontend
- backend
depends_on:
mariadb:
postgres:
condition: service_healthy
redis:
condition: service_healthy
@@ -88,12 +109,13 @@ services:
restart: unless-stopped
environment:
DJANGO_SETTINGS_MODULE: config.settings.selfhosted
DATABASE_URL: mysql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@mariadb:3306/${DB_NAME:-keepitgoing}
SECRET_KEY: ${SECRET_KEY}
DATABASE_URL: postgresql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@postgres:5432/${DB_NAME:-keepitgoing}
REDIS_URL: redis://redis:6379/0
networks:
- backend
depends_on:
mariadb:
postgres:
condition: service_healthy
redis:
condition: service_healthy
@@ -110,12 +132,13 @@ services:
restart: unless-stopped
environment:
DJANGO_SETTINGS_MODULE: config.settings.selfhosted
DATABASE_URL: mysql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@mariadb:3306/${DB_NAME:-keepitgoing}
SECRET_KEY: ${SECRET_KEY}
DATABASE_URL: postgresql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@postgres:5432/${DB_NAME:-keepitgoing}
REDIS_URL: redis://redis:6379/0
networks:
- backend
depends_on:
mariadb:
postgres:
condition: service_healthy
redis:
condition: service_healthy