-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
108 lines (94 loc) · 3.86 KB
/
docker-compose.yml
File metadata and controls
108 lines (94 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
services:
# Public website served via nginx
website:
image: nginx:1.29-alpine
container_name: way-cms-website
ports:
- "${WEBSITE_PORT:-8080}:80"
volumes:
# Single-tenant: website files
- ${WEBSITE_DIR:-./website}:/usr/share/nginx/html:ro
# Multi-tenant: project-specific website (override WEBSITE_DIR per project)
- ${PROJECTS_DIR:-./projects}:/var/www/projects:ro
# Nginx configuration
- ${NGINX_CONF_DIR:-./nginx}/nginx.conf:/etc/nginx/nginx.conf:ro
- ${NGINX_CONF_DIR:-./nginx}/default.conf:/etc/nginx/conf.d/default.conf:ro
restart: unless-stopped
networks:
- way-cms-network
# CMS admin interface
cms:
build:
context: ./cms
dockerfile: Dockerfile
container_name: way-cms-admin
ports:
- "${CMS_PORT:-5001}:5000"
# Override CMD for development - use Flask dev server
# In production, use: image: drumsergio/way-cms:latest (see docker-compose.prod.yml)
command: python app.py
volumes:
# Single-tenant: website files
- ${WEBSITE_DIR:-./website}:/var/www/html:rw
# Backups directory (project-specific backups go here: BACKUP_DIR/project-slug/auto/)
- ${BACKUP_DIR:-./.way-cms-backups}:/.way-cms-backups:rw
# Multi-tenant: SQLite database and settings
- ${DATA_DIR:-./.way-cms-data}:/.way-cms-data:rw
# Multi-tenant: all projects (only used when MULTI_TENANT=true)
- ${PROJECTS_DIR:-./projects}:/var/www/projects:rw
environment:
# ============== Single-Tenant Mode (Default) ==============
# Base directory for website files
- CMS_BASE_DIR=/var/www/html
# Authentication (use either CMS_PASSWORD or CMS_PASSWORD_HASH)
- CMS_USERNAME=${CMS_USERNAME:-admin}
- CMS_PASSWORD=${CMS_PASSWORD:-admin}
- CMS_PASSWORD_HASH=${CMS_PASSWORD_HASH:-}
# ============== Multi-Tenant Mode ==============
# Set MULTI_TENANT=true to enable multi-tenant mode
- MULTI_TENANT=${MULTI_TENANT:-false}
# Multi-tenant directories (only used when MULTI_TENANT=true)
- DATA_DIR=${DATA_DIR:-/.way-cms-data}
- PROJECTS_BASE_DIR=${PROJECTS_BASE_DIR:-/var/www/projects}
# Initial admin user (required for first run in multi-tenant mode)
- ADMIN_EMAIL=${ADMIN_EMAIL:-}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
# Email configuration for magic links (multi-tenant)
- SMTP_HOST=${SMTP_HOST:-}
- SMTP_PORT=${SMTP_PORT:-587}
# Note: Port 465 uses SSL (set SMTP_USE_TLS=false), Port 587 uses TLS (set SMTP_USE_TLS=true)
# If SMTP_USE_TLS is not set, it auto-detects: 465=false, 587=true
- SMTP_USER=${SMTP_USER:-}
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
- SMTP_FROM=${SMTP_FROM:-}
- SMTP_FROM_NAME=${SMTP_FROM_NAME:-Way-CMS}
- SMTP_USE_TLS=${SMTP_USE_TLS:-}
- MAGIC_LINK_EXPIRY_HOURS=${MAGIC_LINK_EXPIRY_HOURS:-24}
- APP_URL=${APP_URL:-http://localhost:5001}
# ============== Common Settings ==============
# Security
- SECRET_KEY=${SECRET_KEY:-change-me-in-production-please}
- READ_ONLY_MODE=${READ_ONLY_MODE:-false}
# Session configuration (in minutes, default 24 hours)
- SESSION_TIMEOUT_MINUTES=${SESSION_TIMEOUT_MINUTES:-1440}
# Website display settings (single-tenant only)
- WEBSITE_URL=${WEBSITE_URL:-}
- WEBSITE_NAME=${WEBSITE_NAME:-}
# Backup directory (default: /.way-cms-backups)
- BACKUP_DIR=${BACKUP_DIR:-/.way-cms-backups}
# Automatic backups (enabled by default)
- AUTO_BACKUP_ENABLED=${AUTO_BACKUP_ENABLED:-true}
# Flask configuration
- PORT=5000
- FLASK_APP=app.py
restart: unless-stopped
networks:
- way-cms-network
depends_on:
- website
networks:
way-cms-network:
driver: bridge
volumes:
website-data:
driver: local