如何在 AWS ECS fargate 集群中容器启动 运行 之前使外部文件可用

How to make external file available before the container starts running in AWS ECS fargate cluster

我是 docker 的新手,我有一个 docker 文件,其中包含构建 docker 图像的所有说明。该图像必须部署在 AWS Fargate 集群中。现在我有一个 python 脚本可以执行以下操作:

1. clone a repo from GitHub
2. Locate the docker file, build the image and push the docker image to AWS ecr
3. Create a task definition and deploy into ECS fargate cluster
4. Additionally the script generate a YAML file based on certain logic that has certain parameters(not related to container config) which is required for the application

如何在容器在 AWS 中启动 运行 之前使该文件内容可供容器使用? 我正在检查 --entrypoint 和 --cmd,但在这里我无法更改 Dockerfile

Is there any way to achieve that without changing the Dockerfile?

如果没有 Dockerfile,则无法向 docker 图像添加层。但是您可以在原始图像之上构建一个 new 图像,COPYing 文件并保留 ENTRYPOINT CMD 和其他配置 as-is.

  1. 从上游 Dockerfile 构建“中间”镜像,给它一个标签,你可以稍后参考:

    docker build -t my-intermediate-image:my-version-tag .
    
  2. 创建你的 yaml 文件到 myfile.yml

  3. 创建一个新的Dockerfile.final开始FROM中间:

    FROM my-intermediate-iamge:my-version-tag
    COPY myfile.yml /expected/yaml/path
    
  4. 构建带有 ECS 标签的最终镜像:

    docker build -f Dockerfile.final -t accountnumber.ecs.amazonaws.com:my-version .
    
  5. 将最终镜像标签推送到ECS

  6. 继续更新 ECS 任务定义以指向新映像