Terraform を使用して docker-compose プロジェクトをデプロイするにはどうすればよいですか? 質問する

Terraform を使用して docker-compose プロジェクトをデプロイするにはどうすればよいですか? 質問する

いろいろ調べてみましたが、これを簡単に行う方法を説明した一貫したリソースを見つけることができませんでした。次のようなプロジェクトがあります:

./
 |-src/
 |--..
 |--Dockerfile
 |-docker-compose.yaml

次のような terraform 構成ファイル:

variable "do_token" {}

# Configure the DigitalOcean Provider
provider "digitalocean" {
  token = "${var.do_token}"
}

# Create a web server
resource "digitalocean_droplet" "web" {
  # ...
}

こんなことができるようになりたい

provider "digitalocean" {
    ip = <my-ip>
    # docker-compose up ?
}

私の作成ファイルは、アプリケーション アーキテクチャを適切に設定します。私は、それを Digital Ocean のどこかの特定のボックスに (できれば IP 経由で) デプロイして実行する方法が欲しいだけですdocker-compose up。どうすればいいでしょうか?

ベストアンサー1

供給業者

テラフォームは供給者これにより、リソース作成時にファイルをコピーしたりスクリプトを実行したりできるようになります。

resource "digitalocean_droplet" "web" {
  # ...

  provisioner "file" {
    source      = "compose-app/"
    destination = "/app"
  }

  provisioner "remote-exec" {
    inline = [
      "cd /app",
      "docker-compose up",
    ]
  }
}

シェフプロビジョナーと一緒に使うこともできます料理本を作成する

ドッカー

テラフォームには平野があるDockerプロバイダーしかし、ComposeやSwarmの定義をそのままでは管理できないので、Compose環境を一つずつ定義する必要があります。ボリュームネットワーク画像コンテナ)。

provider "docker" {
  host = "tcp://droplet:2375/"
}
resource "docker_image" "myapp" {
  name = "me/myapp:1.0.0"
}
resource "docker_container" "myapp" {
  name = "myapp"
  image = "${docker_image.myapp.latest}"
  ports {
    internal = 1234
    external = 1234
  }
}

クベネフィット

実際のアプリケーションをTerraformでデプロイするには、Kubernetes プロバイダー設定できるようになりますレプリケーション コントローラ走るポッドアクセスされるのはサービスDocker上でKubernetesクラスタを実行し、Kubernetes定義を記述する必要があります。作成するDocker Compose からの変換に役立ちます。

おすすめ記事