编辑:我的第一个问题是“如何使用 Fargate 在 AWS ECS 上的任务定义中链接容器?” 但是,可能我从一开始就错了,所以我改变了我的问题并保留以下内容:
我正在尝试通过 ECS 在 AWS 上部署一个简单的基于 Laravel 的应用程序。我的服务使用 docker-compose-yml 文件在本地按预期工作。
但在 AWS 上,我得到:"nginx: [emerg] host not found in upstream "app" in /etc/nginx/conf.d/default.conf:12"
来自我的 Web 容器日志。
这里是我服务的容器:web (nginx)、app (Laravel)、数据库 (MySQL) 和缓存 (redis)。
我知道任务描述的所有容器共享相同的命名空间,因此不需要链接容器(我们无论如何都不能将链接属性与 Fargate 一起使用)。
你能帮我在这里找到问题吗?我瞎了。
这是我工作的本地 docker-compose.yml 文件:
version: '2'
services:
# The Application
app:
image: 696759765437.dkr.ecr.us-east-1.amazonaws.com/ali-
maison/tribe-migrate
volumes:
- /var/www/storage
env_file: '.env'
environment:
- "DB_HOST=database"
- "REDIS_HOST=cache"
# The Web Server
web:
image: 696759765437.dkr.ecr.us-east-1.amazonaws.com/ali-maison/laravel-web
ports:
- 80:80
# The Database
database:
image: mysql:5.6
volumes:
- dbdata:/var/lib/mysql
environment:
- "MYSQL_DATABASE=homestead"
- "MYSQL_USER=homestead"
- "MYSQL_PASSWORD=secret"
- "MYSQL_ROOT_PASSWORD=secret"
# redis
cache:
image: redis:3.0-alpine
volumes:
dbdata:
这是我的网络容器 Dockerfile:
FROM nginx:1.10
ADD vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www
还有我的 vhost.conf:
server {
listen 80;
index index.php index.html;
root /var/www/public;
location / {
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}