如何使用ECS和docker-compose填充具有本地内容的卷

情况

我正在尝试使用Prometheus建立一个Grafana / AWS ECS集群。 Prometheus和Grafana都需要配置文件。通常,我会使用卷将这类信息传递给Docker映像。

由于这是两项服务,因此我想使用docker-compose设置它们并立即将它们绑在一起。

尝试

这是我用于普通docker设置的撰写文件:

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映像/任务中?

zqplyn1234 回答:如何使用ECS和docker-compose填充具有本地内容的卷

在ECS上,应该对docker-container进行不同的处理,上面的docker-compose似乎可以与本地设置一起使用,但是对于ECS,我不建议去安装。

因此,我建议您将配置文件放入docker映像中。例如

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

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

在ECS情况下进行安装的缺点

  • 您需要将配置保留在EC2实例中
  • fargate的情况下,您将无法使用,因为在Fargate中没有要管理的服务器
  • 由于docker-container依赖于配置,您将在AMI中依赖于自动扩展,
本文链接:https://www.f2er.com/3150397.html

大家都在问