如何在ECS上使用参数运行nginx反向代理容器

我在这里有一个稍微修改的容器版本:

http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

要在本地运行,请使用:

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy 

并运行我的其他容器类似于下面:

 $ docker run -e VIRTUAL_HOST=my-domain.local -t -d my-repo/site-name 

我无法将其转换为ECS上的任务定义。

任务定义

我有两个容器:

nginx的-反向代理

  • 端口映射:主机80容器80
  • 基本的:是的
  • 命令:/app/docker-entrypoint.sh

静态网站

  • 端口映射:主机5000容器5000
  • 必要:错误
  • 命令:/some-file.sh
  • 环境variables:VIRTUAL_HOST static.example.com

我有一个ECS实例和一个服务器的集群,上面定义了一个任务。 这会保持循环,并以“已停止(必需的任务退出的容器)”失败。

现在我假设我需要设置卷,但所有的例子,我可以find一个path和一个名字,我不明白我可以如何转换这个“/var/run/docker.sock:/tmp/docker.sock”到任何可用的字段。

我已经很晚了,但是我会为将来遇到这个职位的人回答。

你已经回答了你自己。 它会失败,因为您不是从主机共享Docker套接字,这对于nginx代理映像是必不可less的。

转到您的任务定义并添加一个新的卷。 将其命名为套接字并指定主机path/var/run/docker.sock 。 然后编辑你的nginx代理容器,并在挂载点下selectsocket作为源卷,/ tmp / ddocker.sock作为容器path。 将其标记为只读也是出于安全原因。 使用默认值保留此容器的命令部分。

部署你的新版本,它现在应该工作。