Files
Daymark/docker-compose.yml

114 lines
3.1 KiB
YAML

name: daymark
services:
database:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: diary
POSTGRES_USER: diary_user
POSTGRES_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD in .env}
volumes:
- diary_database:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 12
start_period: 10s
networks: [diary_internal]
diary:
build: .
image: daymark:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
DB_HOST: database
DB_PORT: 5432
DB_NAME: diary
DB_USER: diary_user
DB_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD in .env}
DATABASE_SSL: "false"
DATABASE_POOL_SIZE: 10
JSON_LIMIT: 30mb
COOKIE_SECURE: "false"
MINIO_HOST: minio
MINIO_PORT: 9000
MINIO_BUCKET: field-log-media
MINIO_ACCESS_KEY: fieldlog
MINIO_SECRET_KEY: "${MINIO_PASSWORD:?Set MINIO_PASSWORD in .env}"
MEDIA_FILE_LIMIT: 52428800
STORAGE_QUOTA: 5368709120
SMTP_HOST: mail
SMTP_PORT: 1025
MAIL_FROM: "Daymark <field-log@localhost>"
AUTH_ENCRYPTION_KEY: "${AUTH_ENCRYPTION_KEY:?Set AUTH_ENCRYPTION_KEY in .env}"
BACKUP_PATH: /backups
volumes:
- diary_backups:/backups
- diary_media:/minio-data:ro
depends_on:
database:
condition: service_healthy
minio:
condition: service_healthy
networks: [diary_internal]
minio:
image: minio/minio:latest
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: fieldlog
MINIO_ROOT_PASSWORD: "${MINIO_PASSWORD:?Set MINIO_PASSWORD in .env}"
volumes:
- diary_media:/data
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 10s
timeout: 5s
retries: 10
networks: [diary_internal]
backup:
image: postgres:17-alpine
restart: unless-stopped
environment:
PGHOST: database
PGPORT: 5432
PGDATABASE: diary
PGUSER: diary_user
PGPASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD in .env}
command:
[
"/bin/sh",
"-ec",
"chown 1000:1000 /backups; while true; do stamp=$$(date -u +%Y-%m-%dT%H-%M-%SZ); pg_dump --format=custom --file=/backups/diary-$${stamp}.dump; tar -czf /backups/media-$${stamp}.tar.gz -C /minio-data .; find /backups -type f -mtime +14 -delete; sleep 86400; done",
]
volumes:
- diary_backups:/backups
- diary_media:/minio-data:ro
depends_on:
database:
condition: service_healthy
minio:
condition: service_healthy
networks: [diary_internal]
mail:
image: axllent/mailpit:latest
restart: unless-stopped
ports:
- "8025:8025"
environment:
MP_MAX_MESSAGES: 5000
MP_DATABASE: /data/mailpit.db
volumes:
- diary_mail:/data
networks: [diary_internal]
volumes:
diary_database:
diary_media:
diary_backups:
diary_mail:
networks:
diary_internal:
driver: bridge