🌉

nomadでdockerの -p 8080:80 を実現する設定

2024/10/06に公開

はじめに

いつもDockerで設定していたポートフォワード設定をNomadで同様に設定するにはどうしたらいいんだ?と思って調べたのでメモ。

Dockerではこうしてた

まずはDockerの-pのおさらい。

-p IP:ホスト側ポート:コンテナ側ポート
https://docs.docker.jp/v1.11/engine/userguide/networking/default_network/binding.html

たとえば、nginxのDockerイメージは80番で待ち受けているので、外部から8080番でアクセスさせたい場合は以下の通り。

$ docker run --name some-nginx -d -p 8080:80 some-content-nginx

nomad ではこうする

同様のことをnomadで実現する場合はbridge-modeを使う。

    network {
      port "http" {
        static = 8080
        to = 80
      }
    }

全体HCLサンプル

job "web" {
  datacenters = ["dc1"]

    group "nginx" {

    network {
      port "http" {
        static = 8080
        to = 80
      }
    }

    service {
      name = "http"
      port = "http"
      provider = "nomad" // おまじない
    }

    task "nginx" {
      driver = "docker"

      config {
        image = "nginx/nginx"
        ports = ["http"]
      }
    }
  }
}

Discussion