Использование Terraform для этого вообще немного необычно; вы можете посмотреть другие Docker -инструменты, такие как Docker Compose, чтобы настроить это. В этом примере также есть несколько анти-паттернов: вам обычно следует избегать установки программного обеспечения в работающих контейнерах и избегать выполнения длинных последовательностей императивных команд через Terraform, и обычно бесполезно запускать пустой образ ubuntu
Docker как is.
Вместо этого вы можете запустить Docker Hub mysql
image :
resource "docker_image" "mysql" {
name = "mysql:8"
}
resource "random_password" "mysql_root_password" {
length = 16
}
resource "docker_container" "mysql" {
name = "mysql"
image = "${docker_image.mysql.latest}"
env {
MYSQL_ROOT_PASSWORD = "${random_password.mysql_root_password.result}"
}
mounts {
source = "/some/host/mysql/data/path"
target = "/var/lib/mysql/data"
type = "bind"
}
ports {
internal = 3306
external = 3306
}
}
Если вы хотите выполнить дополнительную настройку созданной базы данных, вы мог бы использовать MySQL провайдера
provider "mysql" {
endpoint = "127.0.0.1:3306" # the "external" port
username = "root"
password = "${random_password.mysql_root_password.result}"
}
resource "mysql_database" "db" {
name = "db"
}