• terraform 测试docker部署


    main.tf

    terraform {
      required_providers {
        docker = {
          source = "kreuzwerker/docker"
        }
      }
    }
    
    provider "docker" {}
    
    resource "docker_image" "nginx" {
      name         = "nginx:latest"
      keep_locally = false
    }
    
    resource "docker_container" "nginx" {
      image = docker_image.nginx.latest
      name  = "tutorial"
      ports {
        internal = 80
        external = 8000
      }
    }
    
    

    执行

    ➜  docker terraform plan
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # docker_container.nginx will be created
      + resource "docker_container" "nginx" {
          + attach           = false
          + bridge           = (known after apply)
          + command          = (known after apply)
          + container_logs   = (known after apply)
          + entrypoint       = (known after apply)
          + env              = (known after apply)
          + exit_code        = (known after apply)
          + gateway          = (known after apply)
          + hostname         = (known after apply)
          + id               = (known after apply)
          + image            = (known after apply)
          + init             = (known after apply)
          + ip_address       = (known after apply)
          + ip_prefix_length = (known after apply)
          + ipc_mode         = (known after apply)
          + log_driver       = "json-file"
          + logs             = false
          + must_run         = true
          + name             = "tutorial"
          + network_data     = (known after apply)
          + read_only        = false
          + remove_volumes   = true
          + restart          = "no"
          + rm               = false
          + security_opts    = (known after apply)
          + shm_size         = (known after apply)
          + start            = true
          + stdin_open       = false
          + tty              = false
    
          + healthcheck {
              + interval     = (known after apply)
              + retries      = (known after apply)
              + start_period = (known after apply)
              + test         = (known after apply)
              + timeout      = (known after apply)
            }
    
          + labels {
              + label = (known after apply)
              + value = (known after apply)
            }
    
          + ports {
              + external = 8000
              + internal = 80
              + ip       = "0.0.0.0"
              + protocol = "tcp"
            }
        }
    
      # docker_image.nginx will be created
      + resource "docker_image" "nginx" {
          + id           = (known after apply)
          + keep_locally = false
          + latest       = (known after apply)
          + name         = "nginx:latest"
          + output       = (known after apply)
        }
    
    Plan: 2 to add, 0 to change, 0 to destroy.
    
    ------------------------------------------------------------------------
    
    Note: You didn't specify an "-out" parameter to save this plan, so Terraform
    can't guarantee that exactly these actions will be performed if
    "terraform apply" is subsequently run.
    
    ➜  docker terraform apply
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # docker_container.nginx will be created
      + resource "docker_container" "nginx" {
          + attach           = false
          + bridge           = (known after apply)
          + command          = (known after apply)
          + container_logs   = (known after apply)
          + entrypoint       = (known after apply)
          + env              = (known after apply)
          + exit_code        = (known after apply)
          + gateway          = (known after apply)
          + hostname         = (known after apply)
          + id               = (known after apply)
          + image            = (known after apply)
          + init             = (known after apply)
          + ip_address       = (known after apply)
          + ip_prefix_length = (known after apply)
          + ipc_mode         = (known after apply)
          + log_driver       = "json-file"
          + logs             = false
          + must_run         = true
          + name             = "tutorial"
          + network_data     = (known after apply)
          + read_only        = false
          + remove_volumes   = true
          + restart          = "no"
          + rm               = false
          + security_opts    = (known after apply)
          + shm_size         = (known after apply)
          + start            = true
          + stdin_open       = false
          + tty              = false
    
          + healthcheck {
              + interval     = (known after apply)
              + retries      = (known after apply)
              + start_period = (known after apply)
              + test         = (known after apply)
              + timeout      = (known after apply)
            }
    
          + labels {
              + label = (known after apply)
              + value = (known after apply)
            }
    
          + ports {
              + external = 8000
              + internal = 80
              + ip       = "0.0.0.0"
              + protocol = "tcp"
            }
        }
    
      # docker_image.nginx will be created
      + resource "docker_image" "nginx" {
          + id           = (known after apply)
          + keep_locally = false
          + latest       = (known after apply)
          + name         = "nginx:latest"
          + output       = (known after apply)
        }
    
    Plan: 2 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    docker_image.nginx: Creating...
    docker_image.nginx: Creation complete after 0s [id=sha256:daee903b4e436178418e41d8dc223b73632144847e5fe81d061296e667f16ef2nginx:latest]
    docker_container.nginx: Creating...
    docker_container.nginx: Creation complete after 0s [id=d5c49635d9b655575129dde9636963a172111c9f10dc03615109c0000ee80683]
    
    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
    ➜  docker ls
    main.tf           terraform.tfstate
    ➜  docker pwd
    /Users/15b883/terraform/docker
    ➜  docker terraform show
    # docker_container.nginx:
    resource "docker_container" "nginx" {
        attach            = false
        command           = [
            "nginx",
            "-g",
            "daemon off;",
        ]
        cpu_shares        = 0
        entrypoint        = [
            "/docker-entrypoint.sh",
        ]
        env               = []
        gateway           = "172.17.0.1"
        hostname          = "d5c49635d9b6"
        id                = "d5c49635d9b655575129dde9636963a172111c9f10dc03615109c0000ee80683"
        image             = "sha256:daee903b4e436178418e41d8dc223b73632144847e5fe81d061296e667f16ef2"
        init              = false
        ip_address        = "172.17.0.2"
        ip_prefix_length  = 16
        ipc_mode          = "private"
        log_driver        = "json-file"
        logs              = false
        max_retry_count   = 0
        memory            = 0
        memory_swap       = 0
        must_run          = true
        name              = "tutorial"
        network_data      = [
            {
                gateway                   = "172.17.0.1"
                global_ipv6_address       = ""
                global_ipv6_prefix_length = 0
                ip_address                = "172.17.0.2"
                ip_prefix_length          = 16
                ipv6_gateway              = ""
                network_name              = "bridge"
            },
        ]
        network_mode      = "default"
        privileged        = false
        publish_all_ports = false
        read_only         = false
        remove_volumes    = true
        restart           = "no"
        rm                = false
        security_opts     = []
        shm_size          = 64
        start             = true
        stdin_open        = false
        tty               = false
    
        ports {
            external = 8000
            internal = 80
            ip       = "0.0.0.0"
            protocol = "tcp"
        }
    }
    
    # docker_image.nginx:
    resource "docker_image" "nginx" {
        id           = "sha256:daee903b4e436178418e41d8dc223b73632144847e5fe81d061296e667f16ef2nginx:latest"
        keep_locally = false
        latest       = "sha256:daee903b4e436178418e41d8dc223b73632144847e5fe81d061296e667f16ef2"
        name         = "nginx:latest"
    }
    ➜  docker docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    d5c49635d9b6        daee903b4e43        "/docker-entrypoint.…"   59 seconds ago      Up 58 seconds       0.0.0.0:8000->80/tcp   tutorial
    

  • 相关阅读:
    hdu 1875 Krustal最小生成树
    寒假学习PID和latex随笔2013/2/10
    HDU:今年暑假不AC
    HDU:七夕节
    寒假规划
    HDU:开门人和关门人
    HDU:cake
    HDU:最小公倍数
    HDU:Who's in the Middle
    Latex 第一个程序 效果
  • 原文地址:https://www.cnblogs.com/syavingcs/p/14440548.html
Copyright © 2020-2023  润新知