4

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

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
  • 环境变量:VIRTUAL_HOST static.example.com

我有一个带有一个 ECS 实例的集群和一个带有一个任务的服务器,如上所述。这会不断循环并失败,并显示“已停止(任务中的基本容器已退出)”。

现在我假设我需要设置卷,但是我能找到的所有示例都有一个路径和一个名称,我看不出如何将这个“/var/run/docker.sock:/tmp/docker.sock”转换为任何可用的字段。

4

1 回答 1

5

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

你已经回答了自己。它失败是因为您没有从主机共享 Docker 套接字,这对 nginx 代理映像至关重要。

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

部署您的新修订版,它现在应该可以工作了。

于 2016-11-03T16:24:46.773 回答