Files
docker-cron/docker-compose.yaml

61 lines
1.5 KiB
YAML

volumes:
tmp-postgres17:
external: false
tmp-mysql9:
external: false
services:
mysql9:
restart: unless-stopped
container_name: mysql9
environment:
MYSQL_ROOT_PASSWORD: mysqlrootpass
volumes:
- ./backups:/backups
- tmp-mysql9:/var/lib/mysql
healthcheck:
test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost']
interval: 5s
timeout: 10s
retries: 5
image: mysql:9
postgres17:
container_name: postgres17
restart: unless-stopped
environment:
- POSTGRES_USER=pguser
- POSTGRES_PASSWORD=pgpass
- POSTGRES_DB=_
volumes:
- ./backups:/backups:rw
- tmp-postgres17:/var/lib/postgresql/data
image: postgres:17
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 30s
timeout: 5s
retries: 5
start_period: 10s
backup-cron:
depends_on:
postgres17:
condition: service_healthy
image: ghcr.io/yanhao98/docker-cron:main
build:
context: .
dockerfile: Dockerfile
environment:
- APK_PACKAGES=curl jq
- CRON_SCHEDULE=*/1 * * * *
- RUN_CRON_ON_START=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./backups:/backups:ro
# - ./examples/init:/docker-entrypoint-init.d
- type: bind
source: ./examples/cron/10-postgres-dump-docker-sock.sh
target: /docker-cron.d/10-postgres-dump-docker-sock.sh
bind:
create_host_path: false
restart: unless-stopped