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

时间:2016-03-22 13:03:57

标签: amazon-web-services amazon-ec2 docker amazon-ecs

我在这里稍微修改了容器版本:

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

静态现场

  • 端口映射:Host 5000 Container 5000
  • 基本:假
  • 命令:/some-file.sh
  • Env vars:VIRTUAL_HOST static.example.com

我有一个集群,其中包含一个ECS实例和一个具有一个任务的服务器,如上所述。这样可以保持循环并在“STOPPED(任务退出时必需的容器)”中失败。

现在我假设我需要设置卷,但我能找到的所有示例都有路径和名称,我无法看到如何转换这个“/var/run/docker.sock:/tmp/docker。袜子“进入任何可用的领域。

1 个答案:

答案 0 :(得分:4)

我已经很晚了,但是对于将来遇到这篇文章的人,无论如何我都会回答。

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

转到“任务定义”并添加新卷。将其命名为 socket 并指定主机路径 /var/run/docker.sock 。然后编辑您的nginx代理容器,在Mount Points下选择 socket 作为源卷,选择 /tmp/docker.sock 作为容器路径。仅出于安全原因将其标记为只读。将此容器的Command部分保留为默认值。

部署新版本,现在应该可以正常使用。