Files
egfh-website/docker-compose.yml
T

104 lines
2.7 KiB
YAML

services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
directus:
image: directus/directus:11
restart: unless-stopped
environment:
KEY: ${DIRECTUS_KEY}
SECRET: ${DIRECTUS_SECRET}
DB_CLIENT: pg
DB_HOST: ${POSTGRES_HOST}
DB_PORT: ${POSTGRES_PORT}
DB_DATABASE: ${POSTGRES_DB}
DB_USER: ${POSTGRES_USER}
DB_PASSWORD: ${POSTGRES_PASSWORD}
ADMIN_EMAIL: ${DIRECTUS_ADMIN_EMAIL}
ADMIN_PASSWORD: ${DIRECTUS_ADMIN_PASSWORD}
ADMIN_TOKEN: ${DIRECTUS_ADMIN_TOKEN:-dev-admin-token-change-me}
PUBLIC_URL: ${DIRECTUS_PUBLIC_URL}
CORS_ENABLED: "true"
CORS_ORIGIN: ${DIRECTUS_CORS_ORIGIN}
WEBSOCKETS_ENABLED: "false"
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://127.0.0.1:8055/server/health >/dev/null 2>&1"]
interval: 10s
timeout: 5s
retries: 10
depends_on:
db:
condition: service_healthy
volumes:
- directus_uploads:/directus/uploads
networks:
- default
- webapps
directus-bootstrap:
image: node:22-alpine
restart: "no"
working_dir: /app
volumes:
- ./:/app
environment:
DIRECTUS_URL: ${DIRECTUS_URL}
DIRECTUS_ADMIN_EMAIL: ${DIRECTUS_ADMIN_EMAIL}
DIRECTUS_ADMIN_PASSWORD: ${DIRECTUS_ADMIN_PASSWORD}
command: ["node", "scripts/bootstrap-directus.mjs"]
depends_on:
db:
condition: service_healthy
directus:
condition: service_healthy
web:
build:
context: .
command: ["sh", "-c", "npm install && npm run dev -- --host 0.0.0.0 --port 80"]
environment:
PUBLIC_SITE_URL: ${PUBLIC_SITE_URL}
PUBLIC_PPR_API_BASE: ${PUBLIC_PPR_API_BASE}
DIRECTUS_URL: ${DIRECTUS_URL}
DIRECTUS_PUBLIC_URL: ${DIRECTUS_PUBLIC_URL}
DIRECTUS_PORT: ${DIRECTUS_PORT}
DIRECTUS_ADMIN_TOKEN: ${DIRECTUS_ADMIN_TOKEN}
depends_on:
directus:
condition: service_healthy
directus-bootstrap:
condition: service_completed_successfully
restart: unless-stopped
volumes:
- ./:/app
- ./public/images:/app/public/images
- web_node_modules:/app/node_modules
- web_astro:/app/.astro
networks:
- default
- webapps
volumes:
db_data:
directus_uploads:
web_node_modules:
web_astro:
networks:
default:
webapps:
external: true