使用 Dockerrun.aws.json 和 Elastic Beanstalk 命名 Docker 容器

Jac*_*son 3 amazon-web-services docker amazon-elastic-beanstalk docker-compose

我需要在 EB 应用程序上执行部署后脚本。我需要在多容器 Docker 环境中的 Docker 容器上执行命令。问题是 Docker 容器被分配了一个容器名称的随机哈希值。

我进行了搜索,似乎找不到任何有关如何在使用 EB 构建和设置过程中为 Docker 容器分配名称的信息。

有人对此有任何见解吗?我知道使用 docker-compose 这不是问题。

mku*_*zyk 5

即使您在 中命名容器Dockerrun.aws.json,beanstalk 仍然使用包含环境名称和其他类似内容的特定哈希来命名它们。但它也有上面文件中的名称。

8a18a679564e   XXXXXXXXXX.dkr.ecr.eu-west-1.amazonaws.com/XXX:1.0.0-nginx   "nginx -g 'daemon ..."   13 hours ago        Up 13 hours         0.0.0.0:80->80/tcp   ecs-awseb-test-rcbdaytu5h-6-nginx-e6a58fe786d9eae7dc01
Run Code Online (Sandbox Code Playgroud)

最后一列包含我们正在谈论的哈希值。如果您正在创建部署后脚本,您仍然可以通过以下方式获取容器 ID:

docker ps -qf name=nginx
Run Code Online (Sandbox Code Playgroud)

它根据名称部分返回容器 ID。

我会在我的配置文件中做类似的事情.ebextensions

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_do_something_on_container.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      MY_CONTAINER=$(docker ps -qf name=nginx)
      docker exec $MY_CONTAINER my command
Run Code Online (Sandbox Code Playgroud)

希望它能为您提供有关如何解决问题的任何想法。:-)