services: db: image: postgres:15 restart: always env_file: ../.env volumes: - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - ./db_data:/var/lib/postgresql/data networks: - homelab_net gitea: image: gitea/gitea:latest container_name: gitea restart: unless-stopped env_file: ../.env environment: USER_UID: 1000 USER_GID: 1000 GITEA__database__DB_TYPE: postgres GITEA__database__HOST: db:5432 GITEA__database__NAME: giteadb GITEA__database__USER: gitea GITEA__server__SSH_PORT: 22 volumes: - ./data:/data # 保留 SSH 端口以便通过 SSH 推送代码(可选),移除 HTTP 宿主端口,由 Traefik 暴露 ports: - "3004:3000" - "222:22" labels: - "traefik.enable=true" - "traefik.http.routers.gitea.rule=Host(`gitea.homelab`)" - "traefik.http.services.gitea.loadbalancer.server.port=3000" networks: - homelab_net networks: homelab_net: external: true