Изменить: мой первый вопрос: "Как связать контейнеры внутри определения задачи в AWS ECS с помощью Fargate?" Но, возможно, я ошибаюсь с самого начала, поэтому я изменил свой вопрос и сохранил содержание ниже:
Я пытаюсь развернуть простое приложение на основе Laravel на AWS через ECS. Мой сервис работает, как ожидалось, в локальном файле docker-compose-yml.
Но на AWS я получаю: "nginx: [emerg] host not found in upstream "app" in /etc/nginx/conf.d/default.conf:12"
из моего журнала веб-контейнера.
Здесь контейнеры моей службы: web (nginx), приложение (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;
}
}