services: db: image: postgres:14.3-alpine hostname: ${POSTGRES_HOST} restart: on-failure environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DB} expose: - 5432 volumes: - ./db:/docker-entrypoint-initdb.d networks: - backend healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 dbt: image: ghcr.io/pablopardogarcia/my-finances-dbt:latest build: ./dbt container_name: my-finances-dbt ports: - "8080:8080" expose: - 8000 environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_HOST=${POSTGRES_HOST} depends_on: db: condition: service_healthy networks: - backend api: image: ghcr.io/pablopardogarcia/my-finances-api:latest build: ./api container_name: my-finances-api expose: - 80 environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_HOST=${POSTGRES_HOST} - DBT_SERVER_HOST=dbt - DBT_SERVER_PORT=8000 depends_on: db: condition: service_healthy networks: - frontend - backend frontend: image: ghcr.io/pablopardogarcia/my-finances-frontend:latest build: ./frontend container_name: my-finances-frontend ports: - "80:80" depends_on: db: condition: service_healthy networks: - frontend networks: backend: frontend: volumes: db-postgres: