У меня есть докер для стека LEMP, который я клонировал из это репо.
Все работает нормально на моей машине разработки, на которой запущено окно 10, но когда я отправляю изображение в концентратор докеров и загружаю его на свой VPS, что бы я ни делал, я всегда получаю эту ошибку:
[emerg] 1#1: host not found in upstream "php-fpm:9000" in /etc/nginx/conf.d/upstream.conf:1
Эта ошибка возникает из двух файлов.
Первый: Из этого файла Nginx Docker
Вот код:
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \
&& rm /etc/nginx/conf.d/default.conf
Второй Из этого файла Nginx default.conf
Вот код:
location ~ \.php$ {
...
fastcgi_pass php-upstream;
...
}
Я говорю, что эти два файла являются причиной, потому что нигде нет ссылки на php-upstream.
Я перепробовал все возможные комбинации добавления / удаления хостов, добавления depends_on
, изменение nginx, версии php, отключение selinux, но это просто не работает. Я всегда получаю одну и ту же ошибку при производстве, но на локальном сервере все работает.
nginx не может разрешить имя хоста php-fpm
и поэтому отказывается заводиться.
Существует простой обходной путь, который в данном случае приводит к 502 - Bad Gateway
пока nginx не сможет разрешить имя хоста восходящего потока: поместите адрес восходящего потока в переменную!
Далее вы должны вручную указать nginx на внутренний DNS докера с resolver
вариант. Внутренний DNS-сервер докера всегда находится в 127.0.0.11
как можно найти в документация.
resolver 127.0.0.11;
set $upstream php-fpm:9000;
# nginx will now start if host is not reachable
fastcgi_pass $upstream;
У меня такая же проблема, я могу решить, добавив ссылки на php-fpm следующим образом:
services:
php-fpm:
build:
context: ./php-fpm
volumes:
- ../www:/var/www/html
depends_on:
- database
links:
- database:db
nginx:
build:
context: ./nginx
volumes:
- ../www:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/sites/:/etc/nginx/sites-available
- ./nginx/conf.d/:/etc/nginx/conf.d
- ./nginx/log/:/var/log/nginx
ports:
- "8080:80"
- "443:443"
depends_on:
- php-fpm
links:
- php-fpm