У меня есть следующий docker-compose.
version: "2"services:
nginx:
image: nginx:latest
restart: always
ports:
- "8026:80"volumes:
- ./web:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
links:
- fpm
fpm:
image: php:7.2-fpm
#build: php-fpm/.
restart: always
volumes:
- ./web:/var/www/html
- ./php-fpm/msmtprc:/etc/msmtprc
expose:
- "9000"
Он работает нормально, и я вижу свою страницу, когда открываю соответствующий URL.
Но после комментирования
image: php:7.2-fpm
и раскомментируя
build: php-fpm/.
и используя такой Dockerfile в php-fpm /, я получил ошибку 502 в nginx и такую ошибку в журналах:
nginx_1 | 2018/08/02 21:19:43 [ошибка] 6 # 6: * 5 connect () не удалось (111: соединение отклонено) при подключении к восходящему каналу, клиент: 192.168.176.1, сервер:, запрос: «GET / report / post.php HTTP / 1.0 «, upstream:» fastcgi: //192.168.176.2: 9000 «, хост:» api.mytestdomain.com «
ОТ php: 7.2-fpm
RUN apt-get update && apt-get -y установить msmtp mutt
RUN echo ‘sendmail_path = «/ usr / bin / msmtp -t»‘>> /usr/local/etc/php/conf.d/mail.iniRUN apt-get update && apt-get -y установить cron
# Добавить файл crontab в каталог cron
ДОБАВИТЬ crontab /etc/cron.d/hello-cron# Дать права на выполнение задания cron
RUN chmod 0644 /etc/cron.d/hello-cron# Применить работу cron
RUN crontab /etc/cron.d/hello-cron# Создайте файл журнала, чтобы иметь возможность запустить tail
RUN touch /var/log/cron.log# Запустить команду при запуске контейнера
CMD [«cron», «-f»]
Почему php-fpm перестает работать?
Постскриптум
Я также вижу следующую разницу:
Когда я использую image
, Я получил
fpm_1 | [02-Aug-2018 21:47:50] ВНИМАНИЕ: fpm запущен, pid 1
fpm_1 | [02-Aug-2018 21:47:50] ВНИМАНИЕ: готов к обработке соединений
во время докер-сочинения.
Если я использую Dockerfile, кажется, что fpm не запускается даже
P.P.S.
Похоже, проблема в CMD ["cron", "-f"]
линия. Есть ли у кого-то обходной путь, чтобы иметь cron
а также fpm
работает в том же контейнере?
проверьте журналы контейнера, это происходит потому, что, как вы говорите, fpm не запускается, это может быть любая ошибка после того, как сборка исходного контейнера php: 7.2-fpm, например, не смогла установить cron
Других решений пока нет …