首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nomad部署带有文件的容器

Nomad部署带有文件的容器
EN

Stack Overflow用户
提问于 2022-02-18 10:09:41
回答 2查看 595关注 0票数 0

我对Nomad非常陌生,我希望部署一个包含特定文件的码头容器。我知道Nomad有一个内置的坞驱动程序,所以这是否是正确的操作: 1.创建一个复制我想要的文件的dockerfile。2.使用从该dockerfile生成的图像在Nomad中使用(在config{}块中)?

或者,通过查看类似的问题,例如here,我会在args变量中放入docker file.yml命令,以便将文件复制到容器中。

我还想知道,如果容器与文件一起成功部署,那么在哪里可以看到它呢?我能直接输入码头集装箱清单吗?

EN

回答 2

Stack Overflow用户

发布于 2022-06-15 21:16:25

以下是我从游牧民网站上获取的监测部分的一个例子:

在这个例子中,我尝试用prom/prometheus:latest安装

,并在映像中复制文件。

2-将下面的代码粘贴到visual studio代码中,以查看

第20行中,我们在游牧文件系统中创建了文件。

4-从第22行到第91行,yml文件的内容

5-我们要求游牧民在码头启动时将local/webserver_alert.yml挂载到码头文件系统/etc/prometheus/webserver_alert.yml中。

代码语言:javascript
复制
job "prometheus" {
  datacenters = ["dc1"]
  type = "service"

  group "monitoring" {
    count = 1
    restart {
      attempts = 2
      interval = "30m"
      delay = "15s"
      mode = "fail"
    }
    ephemeral_disk {
      size = 300
    }

    task "prometheus" {
      template {
        change_mode = "noop"
        destination = "local/webserver_alert.yml"
        data = <<EOH
---
groups:
- name: prometheus_alerts
  rules:
  - alert: Webserver down
    expr: absent(up{job="webserver"})
    for: 10s
    labels:
      severity: critical
    annotations:
      description: "Our webserver is down."

EOH
      }

      template {
        change_mode = "noop"
        destination = "local/prometheus.yml"
        data = <<EOH
---
global:
  scrape_interval:     5s
  evaluation_interval: 5s

alerting:
  alertmanagers:
  - consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['alertmanager']

rule_files:
  - "webserver_alert.yml"

scrape_configs:

  - job_name: 'alertmanager'

    consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['alertmanager']

  - job_name: 'nomad_metrics'

    consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['nomad-client', 'nomad']

    relabel_configs:
    - source_labels: ['__meta_consul_tags']
      regex: '(.*)http(.*)'
      action: keep

    scrape_interval: 5s
    metrics_path: /v1/metrics
    params:
      format: ['prometheus']

  - job_name: 'webserver'

    consul_sd_configs:
    - server: '{{ env "NOMAD_IP_prometheus_ui" }}:8500'
      services: ['webserver']

    metrics_path: /metrics

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['167.86.106.9:9100','167.86.106.9:9107']

EOH
      }
      driver = "docker"
      config {
        image = "prom/prometheus:latest"
        volumes = [
          "local/webserver_alert.yml:/etc/prometheus/webserver_alert.yml",
          "local/prometheus.yml:/etc/prometheus/prometheus.yml"
        ]
        port_map {
          prometheus_ui = 9090
        }
      }
      resources {
        network {
          mbits = 10
          port "prometheus_ui" {}
        }
      }
      service {
        name = "prometheus"
        tags = ["urlprefix-/"]
        port = "prometheus_ui"
        check {
          name     = "prometheus_ui port alive"
          type     = "http"
          path     = "/-/healthy"
          interval = "10s"
          timeout  = "2s"
        }
      }
    }
  }
}

如果其他人有#游牧民-#领事-#保险库或哈希萨克问题,请给我贴上“堆叠”的标签。

票数 2
EN

Stack Overflow用户

发布于 2022-06-16 09:44:54

除了上面的答案之外,jinja2模板也可以工作,所以您可以使用jinja来包含文件,而不是通过复制和粘贴在文件中进行硬编码。

代码语言:javascript
复制
      template {
        data = <<EOF
{% include "path/to/template" %}
EOF
        destination = "path/you/want"
      }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71171685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档