Docker Compose报错services.catalog.api.networks需为列表,求桥接网络配置
解决Docker Compose报错“services.catalog.api.networks must be a list”
报错原因很明确:Docker Compose要求networks字段必须是列表格式,你当前配置中orderapi和catalog.api的networks直接指定了网络名称,没有使用列表语法(添加-前缀),导致YAML解析失败。
以下是修正后的完整配置:
version: '3.4' networks: testnetwork: driver: bridge # 如果你已经手动创建了testnetwork,添加下面这行,避免Compose重新创建同名网络 # external: true services: orderdb: image: mongo # 若需要orderapi连接orderdb,建议将数据库也加入同一网络 networks: - testnetwork catalogdb: image: mongo # catalog.api需要连接catalogdb,必须加入同一网络 networks: - testnetwork orderapi: image: orderapi build: context: . dockerfile: OrderApi/Dockerfile ports: - 5243:5243 networks: - testnetwork catalog.api: image: farhanpatel/catalogapi build: context: . environment: - ASPNETCORE_ENVIRONMENT=Development - "DatabaseSettings:ConnectionString=mongodb://catalogdb:27017" depends_on: - catalogdb ports: - "5116:5116" networks: - testnetwork volumes: mongo_data:
额外注意事项:
- 因为你的
catalog.api需要连接catalogdb,必须把catalogdb也加入testnetwork,否则两个服务不在同一网络无法通信;同理orderapi连接orderdb的话也要做相同配置; depends_on仅控制服务启动顺序,不保证数据库服务完全就绪(比如MongoDB启动完成并可接受连接),如果需要确保数据库就绪后再启动API服务,需要添加healthcheck配置;- 如果你已经手动创建了
testnetwork,一定要在networks.testnetwork下添加external: true,否则Docker Compose会自动创建一个新的testnetwork桥接网络,和你手动创建的不是同一个。
内容的提问来源于stack exchange,提问作者user21179564
相关产品推荐
相关产品推荐

