services: postgres: image: postgres:15-alpine container_name: dyolink_db_container environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: 1234 POSTGRES_DB: dyolink_db ports: - "5433:5432" volumes: - postgres_data_dev:/var/lib/postgresql/data - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro - ./database/backups:/backups networks: - dyolink_network restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 backend: build: ../backend container_name: dyolink_backend_container depends_on: postgres: condition: service_healthy env_file: - ../backend/.env environment: - DATABASE_URL=postgresql://postgres:1234@postgres:5432/dyolink_db - FRONTEND_URL=http://frontend:3000 - PORT=3000 ports: - "4001:3000" volumes: - ../backend:/app:rw - /app/node_modules networks: - dyolink_network command: npm run start:dev restart: unless-stopped frontend: build: ../frontend container_name: dyolink_frontend_container depends_on: - backend env_file: - ../frontend/.env.local environment: - NEXT_PUBLIC_API_URL=http://localhost:4001/api - NEXT_PUBLIC_APP_URL=http://localhost:4000 - PORT=3000 ports: - "4000:3000" volumes: - ../frontend:/app:rw - /app/node_modules - /app/.next networks: - dyolink_network command: npm run dev restart: unless-stopped nginx: build: ./nginx container_name: dyolink_nginx_container depends_on: - backend - frontend ports: - "8080:80" - "8443:443" volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./ssl:/etc/nginx/ssl:ro - ./logs/nginx:/var/log/nginx networks: - dyolink_network restart: unless-stopped networks: dyolink_network: driver: bridge name: dyolink_network volumes: postgres_data_dev: name: dyolink_postgres_data_dev