services: backend: container_name: bilinote-backend build: context: . dockerfile: backend/Dockerfile.gpu args: APT_MIRROR: ${APT_MIRROR:-mirrors.tuna.tsinghua.edu.cn} PIP_INDEX: ${PIP_INDEX:-https://pypi.tuna.tsinghua.edu.cn/simple} env_file: - .env environment: - BACKEND_PORT=${BACKEND_PORT} - BACKEND_HOST=${BACKEND_HOST} volumes: - ./backend:/app expose: - "${BACKEND_PORT}" # 不再对外暴露,用于 nginx 内部通信 deploy: resources: reservations: devices: - driver: "nvidia" count: "all" capabilities: ["gpu"] frontend: container_name: bilinote-frontend build: context: . dockerfile: BillNote_frontend/Dockerfile env_file: - .env expose: - "80" # 不暴露给宿主机,只供 nginx 访问 nginx: container_name: bilinote-nginx image: nginx:1.25-alpine ports: - "${APP_PORT}:80" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - backend - frontend