Я учусь эффективно работать с docker изображениями, используя terraform, в частности, я хотел бы сократить время, затрачиваемое на загрузку mysql изображений из реестра
Я знаю, что ресурсы docker_image имеют keep_locally
аргумент, который, как я понимаю, загрузит новый образ только в том случае, если он не найден в локальном хранилище docker машины, но я также хотел бы загрузить новый образ на случай, если есть более обновленный
Я обнаружил, что есть docker_registry_image
, и понял, что pull_triggers
позволит terraform понять, когда будет новое обновление, и загрузить его только тогда
provider "docker" {
host = "npipe:////.//pipe//docker_engine"
}
data "docker_registry_image" "mysql" {
name = "mysql:8"
}
resource "docker_image" "mysql" {
name = data.docker_registry_image.mysql.name
pull_triggers = [data.docker_registry_image.mysql.sha256_digest]
keep_locally = true
}
resource "docker_container" "mysql" {
name = "mysql"
image = docker_image.mysql.latest
restart = "always"
env = [
"MYSQL_ROOT_PASSWORD=root"
]
volumes {
volume_name = "mysql-vol"
container_path = "/var/lib/mysql"
}
ports {
internal = 3306
external = 3306
}
}
provider "mysql" {
endpoint = "127.0.0.1:3306"
username = "root"
password = "root"
}
resource "mysql_database" "test" {
name = "test"
}
Вот мой код, и я просто хотел бы знать, делает ли он то, что я думаю, а именно загружает новый образ, только если новый находится в реестре, и использует локальный образ в случай нет