Докер AWS ECS — хост nginx: [emerg] не найден в апстриме

Я пытаюсь запустить приложение php + mysql на AWS ECS с помощью докера.
Стек приложения состоит из Docker-контейнера mysql, elk, php-fpm и nginx. Все контейнеры работают на одной док-машине. При запуске Задачи контейнер nginx завершается со следующей ошибкой: nginx: [emerg] хост не найден в вышестоящем «php: 9001» в /etc/nginx/conf.d/upstream.conf:1.

Nginx Dockerfile:

FROM alpine:3.4

RUN apk add --update nginx

#Clear Cache and Temp Data
RUN rm -rf /var/cache/apk/* && rm -rf /tmp/*

ADD nginx.conf /etc/nginx/
ADD symfony.conf /etc/nginx/conf.d/

RUN echo "upstream php-upstream { server php:9001; }" > /etc/nginx/conf.d/upstream.conf

RUN adduser -D -g '' -G www-data www-data

CMD ["nginx"]

EXPOSE 80
EXPOSE 443

RUN echo «upstream php-upstream {server php: 9001;}»>
/etc/nginx/conf.d/upstream.conf

php:9001 часть ссылается на контейнер php, который определен в определении задачи AWS ECS.

nginx.conf:

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections  2048;
multi_accept on;
use epoll;
}

http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
open_file_cache max=100;
}

daemon off;

symfony.conf:

server {
server_name _;
root /var/www/symfony/web;

location / {
try_files $uri @rewriteapp;
}

location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}

location ~ ^/(app|app_dev|config)\.php(/|$) {
fastcgi_pass php-upstream;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}

error_log /var/log/nginx/symfony_error.log;
access_log /var/log/nginx/symfony_access.log;
}

/etc/php7/php-fpm.conf:

[symfony]
user = nobody
group = nobody
listen = 0.0.0.0:9001
pm = dynamic
pm.max_children = 1000
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
env[DB_1_ENV_MYSQL_DATABASE] = $DB_1_ENV_MYSQL_DATABASE
env[DB_1_ENV_MYSQL_USER] = $DB_1_ENV_MYSQL_USER
env[DB_1_ENV_MYSQL_PASSWORD] = $DB_1_ENV_MYSQL_PASSWORD
catch_workers_output = yes

Я также пытался изменить слушать listen = /var/run/php-fpm/php-fpm.sock или же listen = 127.0.0.1:9001 с соответствующими изменениями в конфигурации nginx, но это привело к различным другим сообщениям об ошибках.

0

Решение

Я не установил связи внутри определения задачи AWS ECS между контейнерами php и nginx.

Чтобы установить ссылки для контейнера, перейдите в «НАСТРОЙКИ СЕТИ», а затем введите ссылку в поле «Ссылки».

2

Другие решения

Других решений пока нет …