Files
wagtailcms/docker-compose.local.yml

81 lines
2.4 KiB
YAML

# 仅本机测试。不要用于公网或生产环境;不引用生产 .env。
name: wagtailcms-local
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: cms_local
POSTGRES_USER: cms_local
POSTGRES_PASSWORD: local-database-only
volumes:
- local_postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U cms_local -d cms_local"]
interval: 5s
timeout: 5s
retries: 20
mailpit:
image: axllent/mailpit:v1.29
ports:
- "127.0.0.1:18025:8025"
backend:
build:
context: .
dockerfile: docker/Dockerfile
target: local-test
environment:
DJANGO_SETTINGS_MODULE: wagtailcms.settings.docker_local
SECRET_KEY: docker-local-only-not-for-production-6dc8049e
DATABASE_URL: postgres://cms_local:local-database-only@postgres:5432/cms_local
WAGTAILADMIN_BASE_URL: http://localhost:18000
FRONTEND_BASE_URL: http://localhost:13000
FRONTEND_REVALIDATE_URL: http://frontend:3000/api/revalidate
REVALIDATE_SECRET: docker-local-revalidate-only
DJANGO_SUPERUSER_USERNAME: localadmin
DJANGO_SUPERUSER_EMAIL: admin@example.test
DJANGO_SUPERUSER_PASSWORD: ${CMS_LOCAL_ADMIN_PASSWORD:-Local-CMS-Only-ChangeMe!}
depends_on:
postgres:
condition: service_healthy
mailpit:
condition: service_started
ports:
- "127.0.0.1:18000:8000"
volumes:
- local_media:/app/media
command: ["gunicorn", "wagtailcms.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "1", "--timeout", "120"]
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/admin/login/', timeout=5)"]
interval: 10s
timeout: 10s
start_period: 60s
retries: 20
frontend:
build:
context: ./wagtailcms-frontend
dockerfile: Dockerfile
args:
NEXT_PUBLIC_API_URL: http://localhost:18000
environment:
API_INTERNAL_URL: http://backend:8000
REVALIDATE_SECRET: docker-local-revalidate-only
depends_on:
backend:
condition: service_healthy
ports:
- "127.0.0.1:13000:3000"
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://localhost:3000/').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"]
interval: 10s
timeout: 10s
start_period: 30s
retries: 20
volumes:
local_postgres:
local_media: