149 lines
4.2 KiB
YAML
149 lines
4.2 KiB
YAML
name: wakdo
|
|
|
|
networks:
|
|
wakdo_internal:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
wakdo_db_data:
|
|
wakdo_uploads:
|
|
|
|
services:
|
|
|
|
wakdo-db:
|
|
image: mariadb:11.4
|
|
container_name: wakdo-db
|
|
restart: unless-stopped
|
|
environment:
|
|
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
|
MARIADB_DATABASE: ${DB_NAME}
|
|
MARIADB_USER: ${DB_USER}
|
|
MARIADB_PASSWORD: ${DB_PASSWORD}
|
|
MARIADB_AUTO_UPGRADE: "1"
|
|
TZ: ${APP_TIMEZONE:-Europe/Paris}
|
|
volumes:
|
|
- wakdo_db_data:/var/lib/mysql
|
|
- ./db/init:/docker-entrypoint-initdb.d:ro
|
|
networks:
|
|
- wakdo_internal
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 6
|
|
start_period: 30s
|
|
|
|
wakdo-migrate:
|
|
image: mariadb:11.4
|
|
container_name: wakdo-migrate
|
|
restart: "no"
|
|
environment:
|
|
DB_HOST: ${DB_HOST}
|
|
DB_PORT: ${DB_PORT}
|
|
DB_NAME: ${DB_NAME}
|
|
DB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
|
volumes:
|
|
- ./db:/db:ro
|
|
networks:
|
|
- wakdo_internal
|
|
depends_on:
|
|
wakdo-db:
|
|
condition: service_healthy
|
|
entrypoint: ["bash", "/db/migrate-container.sh"]
|
|
|
|
wakdo-app:
|
|
build:
|
|
context: ./docker/php-fpm
|
|
dockerfile: Dockerfile
|
|
container_name: wakdo-app
|
|
restart: unless-stopped
|
|
environment:
|
|
APP_ENV: ${APP_ENV}
|
|
APP_DEBUG: ${APP_DEBUG}
|
|
APP_TIMEZONE: ${APP_TIMEZONE}
|
|
APP_URL_KIOSK: ${APP_URL_KIOSK}
|
|
APP_URL_ADMIN: ${APP_URL_ADMIN}
|
|
DB_HOST: ${DB_HOST}
|
|
DB_PORT: ${DB_PORT}
|
|
DB_NAME: ${DB_NAME}
|
|
DB_USER: ${DB_USER}
|
|
DB_PASSWORD: ${DB_PASSWORD}
|
|
SESSION_LIFETIME_IDLE: ${SESSION_LIFETIME_IDLE}
|
|
SESSION_LIFETIME_ABSOLUTE: ${SESSION_LIFETIME_ABSOLUTE}
|
|
SESSION_NAME: ${SESSION_NAME}
|
|
CORS_ALLOWED_ORIGIN: ${CORS_ALLOWED_ORIGIN}
|
|
ARGON2_MEMORY_COST: ${ARGON2_MEMORY_COST}
|
|
ARGON2_TIME_COST: ${ARGON2_TIME_COST}
|
|
ARGON2_THREADS: ${ARGON2_THREADS}
|
|
ACCOUNT_LOCKOUT_THRESHOLD: ${ACCOUNT_LOCKOUT_THRESHOLD}
|
|
ACCOUNT_LOCKOUT_BASE_SECONDS: ${ACCOUNT_LOCKOUT_BASE_SECONDS}
|
|
ACCOUNT_LOCKOUT_MAX_SECONDS: ${ACCOUNT_LOCKOUT_MAX_SECONDS}
|
|
IP_THROTTLE_WINDOW_SECONDS: ${IP_THROTTLE_WINDOW_SECONDS}
|
|
IP_THROTTLE_MAX_ATTEMPTS: ${IP_THROTTLE_MAX_ATTEMPTS}
|
|
STAFF_PIN_MIN_LENGTH: ${STAFF_PIN_MIN_LENGTH}
|
|
STAFF_PIN_MAX_LENGTH: ${STAFF_PIN_MAX_LENGTH}
|
|
PIN_THROTTLE_THRESHOLD: ${PIN_THROTTLE_THRESHOLD}
|
|
PIN_THROTTLE_BASE_SECONDS: ${PIN_THROTTLE_BASE_SECONDS}
|
|
PIN_THROTTLE_MAX_SECONDS: ${PIN_THROTTLE_MAX_SECONDS}
|
|
PIN_THROTTLE_WINDOW_SECONDS: ${PIN_THROTTLE_WINDOW_SECONDS}
|
|
PASSWORD_RESET_TTL: ${PASSWORD_RESET_TTL}
|
|
UPLOAD_MAX_SIZE_MB: ${UPLOAD_MAX_SIZE_MB}
|
|
UPLOAD_ALLOWED_MIME: ${UPLOAD_ALLOWED_MIME}
|
|
volumes:
|
|
- ./src:/var/www/html
|
|
- wakdo_uploads:/var/www/html/public/uploads
|
|
networks:
|
|
- wakdo_internal
|
|
depends_on:
|
|
wakdo-migrate:
|
|
condition: service_completed_successfully
|
|
wakdo-db:
|
|
condition: service_healthy
|
|
|
|
wakdo-web:
|
|
build:
|
|
context: ./docker/apache
|
|
dockerfile: Dockerfile
|
|
container_name: wakdo-web
|
|
restart: unless-stopped
|
|
environment:
|
|
APP_HOST_KIOSK: ${APP_HOST_KIOSK}
|
|
APP_HOST_ADMIN: ${APP_HOST_ADMIN}
|
|
ports:
|
|
- "${HTTP_PORT:-8080}:80"
|
|
volumes:
|
|
- ./src:/var/www/html
|
|
- wakdo_uploads:/var/www/html/public/uploads
|
|
networks:
|
|
- wakdo_internal
|
|
depends_on:
|
|
wakdo-migrate:
|
|
condition: service_completed_successfully
|
|
wakdo-app:
|
|
condition: service_started
|
|
wakdo-db:
|
|
condition: service_healthy
|
|
|
|
wakdo-cron:
|
|
build:
|
|
context: ./docker/cron
|
|
dockerfile: Dockerfile
|
|
container_name: wakdo-cron
|
|
restart: unless-stopped
|
|
init: true
|
|
environment:
|
|
DB_HOST: ${DB_HOST}
|
|
DB_PORT: ${DB_PORT}
|
|
DB_NAME: ${DB_NAME}
|
|
DB_USER: ${DB_USER}
|
|
DB_PASSWORD: ${DB_PASSWORD}
|
|
AUDIT_LOG_RETENTION_DAYS: ${AUDIT_LOG_RETENTION_DAYS:-365}
|
|
THROTTLE_PURGE_AFTER_HOURS: ${THROTTLE_PURGE_AFTER_HOURS:-24}
|
|
TZ: ${CRON_TIMEZONE:-Europe/Paris}
|
|
volumes:
|
|
- ./var/backups:/backups
|
|
networks:
|
|
- wakdo_internal
|
|
depends_on:
|
|
wakdo-db:
|
|
condition: service_healthy
|