【问题标题】:How can I populate volumes with local content using ECS and docker-compose如何使用 ECS 和 docker-compose 使用本地内容填充卷
【发布时间】:2020-03-03 05:06:40
【问题描述】:

情况

我正在尝试使用AWS ECS 设置Prometheus / Grafana 集群。 Prometheus 和 Grafana 都需要配置文件。通常我会使用卷将此类信息传递给 docker 映像。

由于这是两个服务,我想使用 docker-compose 来设置它们并同时将它们绑定在一起。

尝试

这是我将用于正常 docker 设置的 compose 文件:

version: '3.0'

volumes:
  prometheus_data: {}
  grafana_data: {}

services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--storage.tsdb.path=/prometheus'
    ports:
      - 9090:9090

  grafana:
    image: grafana/grafana
    volumes:
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    env_file:
      - ./grafana/config.monitoring
    ports:
      - 3000:3000

当我运行ecs-cli compose service up 时,这似乎不起作用。具体来说,任务开始但随后崩溃,我没有看到任何证据表明配置文件实际上已被注入。

This guide 解释了如何在 ECS 上设置 Prometheus 镜像,但它实际上是创建一个配置好的 docker 镜像并发布该镜像——它没有使用 docker compose。

问题

有没有办法使用 docker-compose 将本地计算机中的文件(例如配置文件)注入到我的 ECS 映像/任务中?

【问题讨论】:

  • 对于 ECS,我建议将配置放在 docker 映像中,而不是从主机挂载,这将帮助您在 fargate 中运行,因为 fargate 中没有服务器。例如FROM prom/prometheus copy myconfig.yml /etc/prometheus/prometheus.yml。我
  • 谢谢@Adiii,这是一个很好的建议。如果您有时间将其充实为答案,我也会将其标记为这样!

标签: docker docker-compose amazon-ecs


【解决方案1】:

对于 ECS,docker-container 应该区别对待,上面的 docker-compose 似乎适用于本地设置,但对于 ECS,我不建议安装。

所以我建议将配置文件放入 docker 镜像中。例如

FROM prom/prometheus 
COPY myconfig.yml /etc/prometheus/prometheus.yml

另外,我更喜欢 ECR 作为 AWS 中的 docker 注册表。

ECS情况下挂载的缺点

  • 您需要在 EC2 实例中保留配置
  • fargate 的情况下您将无法使用,因为 Fargate 中没有要管理的服务器
  • 在自动缩放的情况下,您将依赖于 AMI,因为您的 docker-container 依赖于配置

【讨论】:

  • 谢谢!此外,在这种情况下,您是否会手动构建图像并发布到 ECR,或者您是否知道任何方便的脚本,您可以说“为这三个 dockerfile 生成图像并更新其 ECR 条目”
  • 是的,您可以像普通的 docker 注册表一样推送。这是可以帮助您的完整答案。 stackoverflow.com/questions/44052999/…
  • 我在 GKE 和 AWS EC2 中进行了部署,恕我直言,使用 packer 更容易为两者构建自定义映像,然后利用云提供商的特定功能使用 ie 扩展实例集群(swarm、kubernetes...) Amazon EC2 Auto Scaling。 ECS 任务与 AWS 耦合(如果您希望能够部署到其他云提供商,则需要维护更多的东西 - 我更喜欢云不可知论,我的 pc 上的 docker swarm 与 A​​WS 中的相同,等等),ECR 不是那么多 - 一个注册表是一天结束时的注册表。
猜你喜欢
  • 2022-06-15
  • 2019-06-03
  • 2018-02-14
  • 2019-07-28
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多