119 lines
3.5 KiB
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:
|