who_need_help/compose.backup.yaml

119 lines
3.5 KiB
YAML

services:
minio-permissions:
image: who-need-help:minio-local
build:
context: .
dockerfile: Dockerfile.minio
target: server
entrypoint: ["/bin/sh", "-euc"]
command:
- chown -R 10001:10001 /data
volumes:
- minio_data:/data
user: "0:0"
read_only: true
cap_drop: [ALL]
cap_add: [CHOWN]
security_opt:
- no-new-privileges:true
networks: [internal]
restart: "no"
profiles: [backup]
minio:
image: who-need-help:minio-local
build:
context: .
dockerfile: Dockerfile.minio
target: server
command: ["server", "/data", "--console-address", ":9001"]
environment:
MINIO_ROOT_USER: ${BACKUP_MINIO_ROOT_USER:?Set BACKUP_MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${BACKUP_MINIO_ROOT_PASSWORD:?Set BACKUP_MINIO_ROOT_PASSWORD}
volumes:
- minio_data:/data
ports:
- target: 9000
published: "${BACKUP_MINIO_API_PORT:-0}"
host_ip: 127.0.0.1
protocol: tcp
- target: 9001
published: "${BACKUP_MINIO_CONSOLE_PORT:-0}"
host_ip: 127.0.0.1
protocol: tcp
healthcheck:
test: ["CMD", "wget", "--quiet", "--spider", "http://127.0.0.1:9000/minio/health/ready"]
interval: 2s
timeout: 3s
retries: 30
depends_on:
minio-permissions:
condition: service_completed_successfully
user: "10001:10001"
read_only: true
tmpfs:
- /tmp
cap_drop: [ALL]
security_opt:
- no-new-privileges:true
networks: [internal, backup_host]
restart: unless-stopped
profiles: [backup]
minio-client:
image: who-need-help:mc-local
build:
context: .
dockerfile: Dockerfile.minio
target: client
entrypoint: ["mc"]
command: ["--version"]
environment:
MC_CONFIG_DIR: /tmp/mc
MC_HOST_local: http://${BACKUP_MINIO_ROOT_USER:?Set BACKUP_MINIO_ROOT_USER}:${BACKUP_MINIO_ROOT_PASSWORD:?Set BACKUP_MINIO_ROOT_PASSWORD}@minio:9000
volumes:
- ${BACKUP_RUNTIME_DIR:?Set BACKUP_RUNTIME_DIR for the backup profile}:/work
user: "${BACKUP_HOST_UID:?Set BACKUP_HOST_UID}:${BACKUP_HOST_GID:?Set BACKUP_HOST_GID}"
read_only: true
tmpfs:
- /tmp
cap_drop: [ALL]
security_opt:
- no-new-privileges:true
networks: [internal]
profiles: [backup]
backup-tools:
image: who-need-help:backup-tools
build:
context: .
dockerfile: Dockerfile.backup
environment:
PGHOST: db
PGPORT: "5432"
PGUSER: ${POSTGRES_USER:?Set POSTGRES_USER}
PGPASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}
PGDATABASE: ${POSTGRES_DB:?Set POSTGRES_DB}
AWS_ACCESS_KEY_ID: ${BACKUP_MINIO_ROOT_USER:?Set BACKUP_MINIO_ROOT_USER}
AWS_SECRET_ACCESS_KEY: ${BACKUP_MINIO_ROOT_PASSWORD:?Set BACKUP_MINIO_ROOT_PASSWORD}
RESTIC_PASSWORD: ${BACKUP_RESTIC_PASSWORD:?Set BACKUP_RESTIC_PASSWORD}
RESTIC_CACHE_DIR: /tmp/restic-cache
BACKUP_INTERRUPTION_CHUNKS: ${BACKUP_INTERRUPTION_CHUNKS:?Set BACKUP_INTERRUPTION_CHUNKS}
BACKUP_INTERRUPTION_CHUNK_BYTES: ${BACKUP_INTERRUPTION_CHUNK_BYTES:?Set BACKUP_INTERRUPTION_CHUNK_BYTES}
BACKUP_INTERRUPTION_INTERVAL_SECONDS: ${BACKUP_INTERRUPTION_INTERVAL_SECONDS:?Set BACKUP_INTERRUPTION_INTERVAL_SECONDS}
user: "10001:10001"
read_only: true
tmpfs:
- /tmp
cap_drop: [ALL]
security_opt:
- no-new-privileges:true
networks: [internal]
profiles: [backup]
networks:
backup_host:
volumes:
minio_data: