services: api: restart: unless-stopped container_name: api_${POSTGRES_DB} build: . env_file: - .env ports: - "${API_PORT}:8000" depends_on: db: condition: service_healthy volumes: - ./app:/app/app db: image: postgres:18-alpine container_name: postgres_${POSTGRES_DB} restart: unless-stopped shm_size: 128mb #ports: #Not needed as the API container will connect to the DB container using the internal Docker network. Uncomment if you want to access the database from outside the Docker network. # - 5432:5432 volumes: - ./postgresData:/var/lib/postgresql/data - ./Create.sql:/docker-entrypoint-initdb.d/Create.sql environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 start_period: 10s