version: '3.8' services: postgres: image: postgres:16-alpine container_name: ar_pm_postgres restart: unless-stopped environment: POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: ${DB_NAME} ports: - "${DB_PORT}:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"] interval: 10s timeout: 5s retries: 5 backend: build: context: ./backend dockerfile: Dockerfile container_name: ar_pm_backend restart: unless-stopped depends_on: postgres: condition: service_healthy environment: NODE_ENV: ${NODE_ENV} PORT: ${BACKEND_PORT} DATABASE_URL: postgresql://${DB_USER}:${DB_PASSWORD}@postgres:5432/${DB_NAME} JWT_SECRET: ${JWT_SECRET} JWT_REFRESH_SECRET: ${JWT_REFRESH_SECRET} JWT_ACCESS_EXPIRES: ${JWT_ACCESS_EXPIRES} JWT_REFRESH_EXPIRES: ${JWT_REFRESH_EXPIRES} FRONTEND_URL: ${FRONTEND_URL} ports: - "${BACKEND_PORT}:${BACKEND_PORT}" volumes: - ./backend:/app - /app/node_modules command: npm run dev frontend: build: context: ./frontend dockerfile: Dockerfile container_name: ar_pm_frontend restart: unless-stopped depends_on: - backend environment: REACT_APP_API_URL: ${REACT_APP_API_URL} ports: - "${FRONTEND_PORT}:3000" volumes: - ./frontend:/app - /app/node_modules command: npm start volumes: postgres_data: