FROM php: базовый образ 7.4-fpm-alpine, я хочу установить nginx поверх, запустить приложение Laravel и отправить его на Heroku .
Я могу просмотреть простой HTML файл , но не могу запустить простой phpinfo()
файл. Я получил ошибку 502, и в журнале я получаю
connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: , request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:9876"
Я пытался переключиться на сокет (та же ошибка), поэтому я подумал начать с более простого режима с TCP (я бы действительно использовал сокет, в будущем).
Я попытался также изменить fastcgi_pass
на localhost: 9000 или php:9000
, как показано в других вопросах SO, но многие другие ответы предназначены для мультикондейнеров. Я хочу (и мне нужно) запустить только один контейнер для отправки в Heroku.
Любая помощь может быть оценена, спасибо.
Это мой Dockerfile
FROM php:7.4-fpm-alpine
# Create missing directory for nginx
RUN mkdir -p /run/nginx
# Configure PHP
COPY .deploy/php/www.conf /usr/local/etc/php-fpm.d/www.conf
RUN apk update && apk add nginx
COPY /app /var/www/app
COPY .deploy/nginx/default.conf /etc/nginx/conf.d/default.conf
CMD sed -i -e 's/$PORT/'"$PORT"'/g' /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'
Это www.conf
[global]
; Log to stderr
error_log = /dev/stderr
[www]
;listen = /var/run/php-fpm/php-fpm.sock
;listen = /socket/php-fpm.sock
listen = 127.0.0.1:9000
; Enable status page
pm.status_path = /fpm-status
pm = ondemand
pm.max_children = 100
pm.process_idle_timeout = 10s;
pm.max_requests = 1000
clear_env = no
catch_workers_output = yes
decorate_workers_output = no
ping.path = /fpm-ping
Ant, это nginx default.conf
server {
listen $PORT;
root /var/www/app/public;
index index.php index.html index.html;
location / {
try_files $uri $uri/ /index.html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
try_files $uri =404;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Я собираю его с помощью
docker build --tag ${HEROKU_REGISTRY_IMAGE} --file ./.deploy/app/Dockerfile ".";
и запускаю с
docker run -d --name herodock -e "PORT=9876" -p 9876:9876 ${HEROKU_REGISTRY_IMAGE};