如何通过Terraform将Docker网络设置为外部网络?
解决Terraform中容器加入外部Docker网络的问题
你之前用docker_network资源创建网络并添加external标签的做法是错的——这个资源是用来创建新网络的,而外部网络是已经存在的,不需要Terraform去创建,而是要通过data数据源来引用它。
正确的做法分两步:
1. 引用已存在的外部网络
用data "docker_network"块查询你已经配置好的外部网络,比如你的网络名叫proxy:
data "docker_network" "proxy" { name = "proxy" # 替换成你实际的外部网络名称 }
2. 让容器关联这个外部网络
在每个docker_container资源里,通过networks_advanced参数指定这个已引用的网络:
# 第一个容器示例 resource "docker_container" "app1" { name = "app1" image = "your-image-1:latest" # 替换成你的镜像 networks_advanced { name = data.docker_network.proxy.name } } # 第二个容器示例 resource "docker_container" "app2" { name = "app2" image = "your-image-2:latest" # 替换成你的镜像 networks_advanced { name = data.docker_network.proxy.name } }
这个逻辑和你之前在docker-compose.yml里写external: true是一致的:都是告诉编排工具不要创建新网络,直接使用已存在的外部网络。
内容的提问来源于stack exchange,提问作者secretcity-dev
相关产品推荐
相关产品推荐

