我很难将AWS任务定义配置为运行简单的PHP和基于Nginx的容器。
我的"app“容器运行在app:9000
端口,Nginx运行在80
端口。Nginx正在通过fastcgi_pass app-upstream;
将请求转发到app容器。
所有这些都在当地运行得很好。相同的配置在DigitalOcean Docker实例中运行良好,但在AWS中失败。
我猜想某些任务定义配置问题,但我找不到它。
错误日志:
我从Nginx容器获得这个日志
nginx: [emerg] host not found in upstream "app:9000" in /etc/nginx/conf.d/default.conf:2
和来自App (PHP)容器的日志
ECS
我用T2小实例创建了一个简单的集群,它运行得很完美。
Dockerfile
在这个Github中,我添加了Dockerfile
for App,Nginx映像,docker-compose.yml
文件和task-defination.json
文件,如果在停靠文件中有任何错误的话。
发布于 2020-03-10 05:51:43
您的问题与nginx配置中提到的错误上游路径有关。
做以下要调查的事情,如果不需要,也要避免在docker-组合文件中使用自定义容器名称:-
快速解决办法是:-
test_app:9000
正确和推荐的建立码头文件的方法-合成文件:-
"intranet"
这对你有什么帮助?您可以检查您创建的这个网络,确定您的容器是否正确连接,并标识用于连接的名称。
Command : docker network inspect <network_name>
NOTE : Docker treats container names as host names by default for internal connections.
发布于 2020-03-10 05:45:01
在使用多个容器时,容器名称对于提供内部连接非常重要。
正如我看到您的Docker文件一样,容器名称应该与nginx中使用的名称相匹配。
version: '3'
services:
test_app:
container_name: app # not test_app_1
volumes:
- test-app-data:/var/www/app
test_nginx:
image: "xxxxxx.dkr.ecr.xx-xx-1.amazonaws.com/test-nginx"
build:
context: ./docker/nginx
dockerfile: Dockerfile
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- test-app-data:/var/www/app
- test-nginx-log:/var/log/nginx
external_links:
- app # not test_app_1
depends_on:
- test_app
volumes:
test-app-data:
test-nginx-log:
发布于 2021-04-09 14:32:16
我也有同样的问题。我的“博客”容器运行在blog:8000
端口,"nginx“容器运行在80
端口。"nginx“容器正在将请求转发到"blog”容器。
因为我根本没有在"nginx“容器的”网络设置“中设置”链接“。
因此,我将后台容器的名称"blog“放在前面的容器"nginx”中(“链接”在“nginx”容器的“网络设置”中)。
然后,正确地运行"blog“和"nginx”容器是成功的。
因此,在您的示例中,将back容器的名称"app“放在前面的容器"nginx”中(在“nginx”容器的“网络设置”中的“链接”)。看起来不错。我用的是Adiii's solution。
不要忘记将"CMD-SHELL, curl -f http://localhost:9000/ || exit 1
“放在”命令“中,在”应用程序“容器的”健康检查“中。
此外,不要忘记将"app“放在”容器名称“中,并在”启动依赖排序“中的”启动依赖排序“中选择”健康“来表示"nginx”容器。
https://stackoverflow.com/questions/60611062
复制相似问题