services: frontend: image: dexermatters/dexerblog-frontend:1.9 build: context: . dockerfile: Dockerfile.frontend args: - HTTP_PROXY=http://172.17.0.1:7890 - HTTPS_PROXY=http://172.17.0.1:7890 ports: - "3000:3000" depends_on: - backend networks: - app-network frontend-dev: build: context: . dockerfile: Dockerfile.frontend-dev args: - HTTP_PROXY=http://172.17.0.1:7890 - HTTPS_PROXY=http://172.17.0.1:7890 ports: - "3000:3000" volumes: # Mount the entire project root for workspace support - .:/app # Prevent node_modules from being overwritten by host - /app/node_modules - /app/frontend/node_modules - /app/frontend/.next depends_on: - backend-dev networks: - app-network environment: - NODE_ENV=development - WATCHPACK_POLLING=true backend: image: dexermatters/dexerblog-backend:1.5 build: context: . dockerfile: Dockerfile.backend args: - HTTP_PROXY=http://172.17.0.1:7890 - HTTPS_PROXY=http://172.17.0.1:7890 ports: - "3001:3001" depends_on: db: condition: service_healthy networks: - app-network environment: - DB_HOST=db - DB_PORT=5432 - DB_NAME=dexerblog - DB_USER=dexer - DB_PASSWORD=root # Clear proxy settings for runtime to allow direct access to GitHub - HTTP_PROXY= - HTTPS_PROXY= dns: - 8.8.8.8 - 8.8.4.4 backend-dev: build: context: . dockerfile: Dockerfile.backend-dev args: - HTTP_PROXY=http://172.17.0.1:7890 - HTTPS_PROXY=http://172.17.0.1:7890 ports: - "3001:3001" volumes: # Mount the backend directory for hot reloading - ./backend:/app # Prevent node_modules from being overwritten by host - /app/node_modules depends_on: db: condition: service_healthy networks: - app-network environment: - NODE_ENV=development - DB_HOST=db - DB_PORT=5432 - DB_NAME=dexerblog - DB_USER=dexer - DB_PASSWORD=root # Clear proxy settings for runtime to allow direct access to GitHub - HTTP_PROXY= - HTTPS_PROXY= dns: - 8.8.8.8 - 8.8.4.4 db: image: postgres:alpine restart: always ports: - "5432:5432" environment: POSTGRES_USER: dexer POSTGRES_PASSWORD: root POSTGRES_DB: dexerblog healthcheck: test: [ "CMD-SHELL", "pg_isready -U dexer -d dexerblog" ] interval: 10s timeout: 5s retries: 5 volumes: - ./data:/var/lib/postgresql/data networks: - app-network nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - frontend networks: - app-network networks: app-network: driver: bridge