如何在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。 将其标记为只读也是出于安全原因。 使用默认值保留此容器的命令部分。
部署你的新版本,它现在应该工作。