2017-03-01 2 views
0

J'essaie d'exécuter une application php + mysql avec le menu fixe AWS ECS. La pile d'application se compose d'un conteneur docker mysql, elk, php-fpm et nginx. Les conteneurs fonctionnent tous sur la même machine docker. Lorsque la tâche démarre, le conteneur nginx se ferme avec l'erreur suivante: nginx: [emerg] hôte non trouvé dans amont "php: 9001" dans /etc/nginx/conf.d/upstream.conf:1.AWS ECS Docker - nginx: [emerg] hôte introuvable en amont

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

Les php:9001 partie des références dans le récipient de php, qui est défini dans la définition des tâches 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 

Je suis un lso a essayé de changer l'écoute listen = /var/run/php-fpm/php-fpm.sock ou listen = 127.0.0.1:9001 avec les changements correspondants à la config nginx, mais cela a entraîné divers autres messages d'erreur.

Répondre

1

Je n'ai pas défini les liens dans la définition de tâche AWS ECS entre les conteneurs php et nginx.

Pour définir les liens pour un conteneur, allez dans "RÉGLAGES RÉSEAU", puis entrez le lien dans le champ "Liens".

+0

Pouvez-vous s'il vous plaît développer ceci? Je n'ai pas trouvé l'option que vous dites .. – Borjante