diff --git a/.env.docker.example b/.env.docker.example index 3e505ad..7ca5dc5 100644 --- a/.env.docker.example +++ b/.env.docker.example @@ -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 # =================================================================== diff --git a/docker-compose.yml b/docker-compose.yml index aca0721..d815190 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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