All checks were successful
Build and Release / release (push) Successful in 1m7s
120 lines
2.7 KiB
YAML
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: |