Files
home/Projects/kompose/sexy/compose.yaml
2025-10-08 10:35:48 +02:00

104 lines
4.8 KiB
YAML

name: sexy
services:
directus:
build:
context: ./
container_name: ${COMPOSE_PROJECT_NAME}_api
restart: unless-stopped
networks:
- kompose_network
volumes:
- ./uploads:/directus/uploads
- ${DIRECTUS_BUNDLE}:/directus/extensions/sexy.pivoine.art
environment:
SECRET: ${DIRECTUS_SECRET}
DB_CLIENT: pg
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT}
DB_DATABASE: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
CACHE_ENABLED: ${CACHE_ENABLED}
CACHE_AUTO_PURGE: ${CACHE_AUTO_PURGE}
CACHE_STORE: redis
REDIS: redis://redis:6379
ADMIN_EMAIL: ${ADMIN_EMAIL}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
WEBSOCKETS_ENABLED: ${WEBSOCKETS_ENABLED}
PUBLIC_URL: ${PUBLIC_URL}
CORS_ENABLED: ${CORS_ENABLED}
CORS_ORIGIN: ${CORS_ORIGIN}
SESSION_COOKIE_SECURE: ${SESSION_COOKIE_SECURE}
SESSION_COOKIE_SAME_SITE: ${SESSION_COOKIE_SAME_SITE}
SESSION_COOKIE_DOMAIN: ${SESSION_COOKIE_DOMAIN}
EXTENSIONS_PATH: ${EXTENSIONS_PATH}
EXTENSIONS_AUTO_RELOAD: ${EXTENSIONS_AUTO_RELOAD}
CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC: ${CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC}
EMAIL_TRANSPORT: ${EMAIL_TRANSPORT}
EMAIL_FROM: ${EMAIL_FROM}
EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST}
EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT}
EMAIL_SMTP_USER: ${EMAIL_SMTP_USER}
EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD}
USER_REGISTER_URL_ALLOW_LIST: ${USER_REGISTER_URL_ALLOW_LIST}
PASSWORD_RESET_URL_ALLOW_LIST: ${PASSWORD_RESET_URL_ALLOW_LIST}
# healthcheck:
# test: ["CMD", "wget", "--spider", "-q", "http://localhost:8055/server/health"]
# interval: 30s
# timeout: 5s
# retries: 3
# start_period: 60s
labels:
- 'traefik.enable=true'
- 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-api-redirect-web-secure.redirectscheme.scheme=https'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-api-web.middlewares=$COMPOSE_PROJECT_NAME-api-redirect-web-secure'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-api-web.rule=Host(`$TRAEFIK_HOST`) && PathPrefix(`/api`)'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-api-web.entrypoints=web'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-api-web-secure.rule=Host(`$TRAEFIK_HOST`) && PathPrefix(`/api`)'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-api-web-secure.tls.certresolver=resolver'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-api-web-secure.entrypoints=web-secure'
- 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-api-web-secure-compress.compress=true'
- 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-api-strip.stripprefix.prefixes=/api'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-api-web-secure.middlewares=$COMPOSE_PROJECT_NAME-api-strip,$COMPOSE_PROJECT_NAME-api-web-secure-compress'
- 'traefik.http.services.$COMPOSE_PROJECT_NAME-api-web-secure.loadbalancer.server.port=8055'
- 'traefik.docker.network=${NETWORK_NAME:-kompose}'
frontend:
image: ${FRONTEND_IMAGE}
container_name: ${COMPOSE_PROJECT_NAME}_frontend
restart: unless-stopped
user: node
working_dir: /home/node/app/packages/frontend
networks:
- kompose_network
environment:
NODE_ENV: production
volumes:
- /var/www/sexy.pivoine.art:/home/node/app
command: ["node", "build/index.js"]
# healthcheck:
# test: ["CMD-SHELL", "wget --spider -q http://localhost:${FRONTEND_PORT}/ || exit 1"]
# interval: 30s
# timeout: 5s
# retries: 3
# start_period: 30s
labels:
- 'traefik.enable=true'
- 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-frontend-redirect-web-secure.redirectscheme.scheme=https'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-frontend-web.middlewares=$COMPOSE_PROJECT_NAME-frontend-redirect-web-secure'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-frontend-web.rule=Host(`$TRAEFIK_HOST`)'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-frontend-web.entrypoints=web'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-frontend-web-secure.rule=Host(`$TRAEFIK_HOST`)'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-frontend-web-secure.tls.certresolver=resolver'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-frontend-web-secure.entrypoints=web-secure'
- 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-frontend-web-secure-compress.compress=true'
- 'traefik.http.routers.$COMPOSE_PROJECT_NAME-frontend-web-secure.middlewares=$COMPOSE_PROJECT_NAME-frontend-web-secure-compress'
- 'traefik.http.services.$COMPOSE_PROJECT_NAME-frontend-web-secure.loadbalancer.server.port=${FRONTEND_PORT}'
- 'traefik.docker.network=${NETWORK_NAME:-kompose}'
networks:
kompose_network:
name: ${NETWORK_NAME:-kompose}
external: true