Reputation: 11
As you know. kafka is depends on zookeeper. I want to config zk port for kafka.
zk
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
}
}
}
resource "docker_image" "zookeeper" {
name = "ubuntu/zookeeper:latest"
}
resource "docker_container" "zookeeper" {
image = docker_image.zookeeper.name
name = "zookeeper_test"
ports {
internal = 2181
external = 12181
}
}
kafka
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
}
}
}
resource "docker_image" "kafka" {
name = "ubuntu/kafka:latest"
}
resource "docker_container" "kafka" {
image = docker_image.kafka.name
name = "kafka_test"
// Maybe this field "command" to use, but it's not work.
command = [
"-e", "ZOOKEEPER_PORT=12181"
]
ports {
internal = 9092
external = 19092
}
}
Upvotes: 1
Views: 166
Reputation: 18203
You should use env option. Additionally, in order to tell terraform that the Kafka container depends on the Zookeeper, you have to use implicit dependency to make sure one is created before the other:
resource "docker_container" "kafka" {
image = docker_image.kafka.name
name = "kafka_test"
env = [
"ZOOKEEPER_PORT=${docker_container.zookeeper.ports[0].external}"
]
ports {
internal = 9092
external = 19092
}
}
Upvotes: 1