docker 通过Terraform将容器部署到Azure-构建自定义映像并在Azure容器组中使用它的最佳实践

j2datikz  于 2022-12-18  发布在  Docker
关注(0)|答案(1)|浏览(122)

到目前为止,我正在研究如何使用Terraform将我的基础设施迁移到Azure。我现在遇到的问题是以下场景:我有一个docker映像,它使用copy命令向其中添加一些文件。我能想到的一个解决方案是,我首先使用docker构建此映像,将其推送到Azure注册表,然后将其用作azrerm_container_group资源中的容器。使用kreuzwerker/docker提供程序,我也可以只使用docker文件,但在Azure中找不到等效的解决方案。因此,你有什么建议?2先谢了!
天青的碱为:

resource "azurerm_container_group" "containers" {
  name                = "xxx"
  location            = xxx
  resource_group_name = xxx
  ip_address_type     = "Public"
  os_type             = "Linux"

  container {
    name   = "xxx"
    image  = "xx/xx:latest"
    cpu    = "1"
    memory = "1.5"
tf7tbtn2

tf7tbtn21#

我尝试在我的环境与下面的代码。

  • 检查在将Docker映像推送到注册表时给定的映像的名称。
  • 通常它会被推到dockerhub。
  • 要将映像推送到Microsoft容器注册表,请在容器注册表的名称前添加或添加***mcr.microsoft.com/***。

推送到microsoft容器注册表

代码:

provider "docker" {
 # host = azurerm_container_registry.acr.login_server
  registry_auth {
    address  = azurerm_container_registry.acr.login_server
    username = azurerm_container_registry.acr.admin_username
    password = azurerm_container_registry.acr.admin_password
  }
}


resource "docker_registry_image" "helloworld" {
  name = "mcr.microsoft.com/azuredocs/aci-helloworld:latest"

  build {
    context    = "${path.cwd}/absolutePathToContextFolder"
    dockerfile = "Dockerfile"
  }
   
 }

然后尝试在容器组中存储/使用。

resource "azurerm_container_group" "example" {
  name                = "kaexample-container"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  ip_address_type     = "Public"
  dns_name_label      = "kavyaaci-label"
  os_type             = "Linux"

  container {
    name   = "hello-world"
    image  = "mcr.microsoft.com/azuredocs/aci-helloworld:latest"
    cpu    = "0.5"
    memory = "1.5"

    ports {
      port     = 443
      protocol = "TCP"
    }
  }

  tags = {
    environment = "testing"
  }
}

提供者.tf

terraform {
  required_providers {
 

    azapi = {
      source  = "azure/azapi"
      version = "=0.1.0"
    }

    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=3.0.2"   
    }

    docker = {
      source  = "kreuzwerker/docker"
      version = ">= 2.16.0"
    }
}
  • 执行代码:*

地形应用

容器中的图像:

参考:Use terraform to push docker image to azure container registry - Stack Overflow

相关问题