72 lines
1.8 KiB
YAML
72 lines
1.8 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
|
|
volumes:
|
|
- pg_data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 5
|
|
networks:
|
|
- history-api-project
|
|
|
|
cache:
|
|
image: redis:8.6.1-alpine
|
|
container_name: history_redis
|
|
restart: unless-stopped
|
|
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"
|
|
# Thêm ls để kiểm tra chắc chắn lúc chạy
|
|
ls /migrations
|
|
/migrate -path /migrations -database "$$DB_URL" up || \
|
|
(/migrate -path /migrations -database "$$DB_URL" force 8 && \
|
|
/migrate -path /migrations -database "$$DB_URL" up)
|
|
networks:
|
|
- history-api-project
|
|
app:
|
|
build: .
|
|
container_name: history_app
|
|
restart: unless-stopped
|
|
depends_on:
|
|
migrate:
|
|
condition: service_completed_successfully
|
|
cache:
|
|
condition: service_started
|
|
ports:
|
|
- "3344:3344"
|
|
networks:
|
|
- history-api-project
|
|
|
|
volumes:
|
|
pg_data:
|
|
|
|
networks:
|
|
history-api-project: |