Files
History_Api/docker-compose.yml
AzenKain 2d36004ac7
All checks were successful
Build and Release / release (push) Successful in 1m7s
UPDATE: Media module
2026-04-05 22:25:43 +07:00

120 lines
2.7 KiB
YAML

services:
db:
image: postgis/postgis:18-3.6
container_name: history_db
restart: unless-stopped
env_file:
- ./assets/resources/.env
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
- PGDATA=/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
networks:
- history-api-project
cache:
image: redis:8.6.2-alpine
container_name: history_redis
restart: unless-stopped
command: ["redis-server", "--appendonly", "yes"]
volumes:
- redis_data:/data
networks:
- history-api-project
migrate:
build:
context: .
dockerfile_inline: |
FROM migrate/migrate
COPY db/migrations /migrations
container_name: history_migrate
depends_on:
db:
condition: service_healthy
env_file:
- ./assets/resources/.env
entrypoint:
- sh
- -c
- |
DB_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable"
for i in 1 2 3; do
echo "Migration attempt $$i..."
if /migrate -path /migrations -database "$$DB_URL" up; then
echo "Migration success"
exit 0
fi
sleep 2
done
echo "Migration failed after 3 attempts"
exit 1
networks:
- history-api-project
app:
build: .
container_name: history_app
restart: unless-stopped
depends_on:
migrate:
condition: service_completed_successfully
db:
condition: service_healthy
cache:
condition: service_started
env_file:
- ./assets/resources/.env
ports:
- "3344:3344"
networks:
- history-api-project
email_worker:
build: .
container_name: history_email_worker
restart: unless-stopped
depends_on:
db:
condition: service_healthy
cache:
condition: service_started
env_file:
- ./assets/resources/.env
command: ["./email-worker"]
networks:
- history-api-project
storage_worker:
build: .
container_name: history_storage_worker
restart: unless-stopped
depends_on:
db:
condition: service_healthy
cache:
condition: service_started
env_file:
- ./assets/resources/.env
command: ["./storage-worker"]
networks:
- history-api-project
volumes:
pg_data:
redis_data:
networks:
history-api-project: