如何在Docker容器之前让Terraform启动Docker网络

问题描述

terraform Apply的首次运行显示错误:无法启动容器:来自守护程序的错误响应:未找到网络疫苗网”

第二次运行:一切正常。

我认为terraform自己管理依赖项-显然这里失败了。我的档案有误吗?或者我可以自己建立依赖关系?

.tf文件

# Setting up docker network
resource "docker_network" "private_network" {
  name       = "vaccine-net"
  attachable = true
  ipam_config {
    subnet  = "10.0.1.0/24"
    gateway = "10.0.1.254"
  }
}

# create db container
resource "docker_container" "bootstrapper" {
  name  = "bootstrapper"
  image = "vaccine/bootstrapper"
  networks_advanced {
    name = "vaccine-net"
    ipv4_address ="10.0.1.1"
  }
}

解决方法

您确定您的网络是在创建容器之前创建的吗?我看不到您的网络和容器之间的链接。尝试参考Docker网络(首选):

# Setting up docker network
resource "docker_network" "private_network" {
  name       = "vaccine-net"
  attachable = true
  ipam_config {
    subnet  = "10.0.1.0/24"
    gateway = "10.0.1.254"
  }
}

# create db container
resource "docker_container" "bootstrapper" {
  name  = "bootstrapper"
  image = "vaccine/bootstrapper"
  networks_advanced {
    name = "${docker_network.private_network.name}"
    ipv4_address ="10.0.1.1"
  }
}

或显式使用depends_on

# Setting up docker network
resource "docker_network" "private_network" {
  name       = "vaccine-net"
  attachable = true
  ipam_config {
    subnet  = "10.0.1.0/24"
    gateway = "10.0.1.254"
  }
}

# create db container
resource "docker_container" "bootstrapper" {
  name  = "bootstrapper"
  image = "vaccine/bootstrapper"
  networks_advanced {
    name = "vaccine-net"
    ipv4_address ="10.0.1.1"
  }

   depends_on = [docker_network.private_network]
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...