81 lines
2.4 KiB
YAML
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:
|