advdoors/docker/docker-compose.yml
Maxim Snesarev d8ef285f15 Update justfile and docker-compose for improved production workflow
- Added image reference for the app in docker-compose.yml.
- Modified justfile to include new push and prod-pull commands for building and deploying the app image.
- Updated prod-up command to pull the latest image before starting containers, enhancing deployment efficiency.
2026-04-03 02:32:47 +03:00

110 lines
2.7 KiB
YAML

services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: advdoors
POSTGRES_USER: advdoors
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-advdoors}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U advdoors"]
interval: 10s
timeout: 5s
retries: 5
minio:
image: minio/minio:latest
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
volumes:
- minio-data:/data
ports:
- "127.0.0.1:9001:9001"
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 10s
timeout: 5s
retries: 5
minio-init:
image: minio/mc:latest
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c "
mc alias set local http://minio:9000 $${MINIO_ROOT_USER:-minioadmin} $${MINIO_ROOT_PASSWORD:-minioadmin};
mc mb --ignore-existing local/advdoors-media;
mc anonymous set download local/advdoors-media;
exit 0;
"
app:
image: git.oberonworks.ru/oberon/advdoors:latest
build:
context: ..
dockerfile: docker/Dockerfile
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
minio:
condition: service_healthy
environment:
DATABASE_URI: postgresql://advdoors:${POSTGRES_PASSWORD:-advdoors}@postgres:5432/advdoors
PAYLOAD_SECRET: ${PAYLOAD_SECRET}
S3_ENDPOINT: http://minio:9000
S3_BUCKET: advdoors-media
S3_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin}
S3_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-minioadmin}
S3_REGION: us-east-1
NEXT_PUBLIC_SITE_URL: ${SITE_URL:-https://advdoors.ru}
caddy:
image: caddy:2-alpine
restart: unless-stopped
depends_on:
- app
- minio
ports:
- "80:80"
- "443:443"
- "443:443/udp"
environment:
SITE_DOMAIN: ${SITE_DOMAIN:-advdoors.ru}
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
backup:
image: postgres:16-alpine
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
PGPASSWORD: ${POSTGRES_PASSWORD:-advdoors}
volumes:
- ./backup.sh:/backup.sh:ro
- backups:/backups
entrypoint: >
/bin/sh -c "
while true; do
/backup.sh
sleep 86400
done
"
volumes:
pgdata:
minio-data:
caddy-data:
caddy-config:
backups: