Docker Compose指定自定义网络却创建新网络的问题求助
问题原因与解决方法
原因
Docker Compose默认会以当前命令执行目录的名称作为项目前缀,自动为配置中定义的网络、卷等资源添加前缀。你看到的ark-sql_trade-net,就是目录名ark-sql和你配置里的trade-net组合生成的新网络。
解决方法
方法1:配置使用外部已有网络
修改你的docker-compose.yml,在networks部分添加external: true,告诉Compose直接使用已存在的trade-net,不要创建新网络:
version: '3.8' services: python: container_name: python build: . tty: true networks: - trade-net depends_on: - timescale timescale: image: timescale/timescaledb-ha:pg14-latest container_name: timescaledb ports: - "5432:5432" volumes: - timescale-volume:/home/postgres/pgdata/data environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=mypass networks: - trade-net networks: trade-net: external: true # 指定为外部已存在的网络 driver: bridge volumes: timescale-volume:
方法2:启动时指定项目名(自定义前缀)
如果不想修改配置,可以在启动容器时用-p参数指定项目名,替换默认的目录前缀。比如想让网络前缀为myproject,执行:
docker-compose -p myproject up -d
这种方法会生成myproject_trade-net格式的网络,适合需要自定义项目前缀的场景,但无法直接复用已有的trade-net。
后续清理(可选)
如果之前自动生成的ark-sql_trade-net网络无使用需求,可以删除:
docker network rm ark-sql_trade-net
内容的提问来源于stack exchange,提问作者moth
相关产品推荐
相关产品推荐

