Задать вопрос
@tectolog

Какие порты пробрасывать в настройках php5.6-fpm в контейнере Docker-а?

Всем привет.

Нужна помощь в ситуации - запутался :)
Ситуация:
на сервере с Ubuntu20.04 на связке nginx, php7.4-fpm, mariabd, symfony2 должен бы функционировать перенесенный с другого сервера сайт, где он на Ubuntu14.04 в той же связке благополучно работал на php5.6-fpm.
Чтобы не переписывать кучу функционала в php под новую версию, пришлось выбрать вариант с php5.6-fpm, запускаемым из Docker (с Docker-ом сталкиваюсь впервые):
Docker на сервер установил
Docker-ом заполучил образ нужной версии php-fpm (отсюда https://github.com/vicenterusso/php56-fpm)
Теперь нужно запустить контейнер, отсюда вопросы

Вопросы:
1. Какие порты указывать для запускаемого из контейнера php-fpm, чтобы php5.6-fpm можно было "цеплять" в nginx?
Команда в терминале формируется пока такая:
sudo docker container run -d --name php5.6-fpm -p ???:??? vicenterusso/php56-fpm
- все ли здесь верно указано?
(На https://github.com/vicenterusso/php56-fpm дана команда:
sudo docker container run --rm --name phpfpm -v $(pwd):/var/www/html -p 3000:3000 vicenterusso/php56-fpm php -S="0.0.0.0:3000" -t="/var/www/html")
2. В настройках nginx-конфига сайта надо указывать к какому сокету контейнерно запущенного php-fpm привязываться. Что и как именно указывать?
Текущая настройка из конфига сайта:
...
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
...

3. Запущенный контейнер с php5.6-fpm версией будет "работать параллельно" php7.4-fpm-у хоста сервера. При такой схеме я смогу подключать к php5.6-fpm любые нужные сайты - верно? Главное, в nginx-конфигах правильно подключать php5.6-fpm - в урлах сайта, надеюсь, не должны будут присутствовать указанные номера портов?

Спасибо!
  • Вопрос задан
  • 52 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Daemon23RUS
@Daemon23RUS
1й момент - ограничить доступность контейнера только localhost
-p ???:??? -> -p 127.0.0.1:3000:3000
В конфиге nginx (он же у Вас на хостовой машине) proxy_pass http://127.0.0.1:3000;
Порт 3000 ессно должен быть у Вас не занят никаким другим приложением
а для остальных контейнеров -p 127.0.0.1:3001:3000 -p 127.0.0.1:3002:3000
с соответствующей записью в конфиге Nginx proxy_pass http://127.0.0.1:3001; proxy_pass http://127.0.0.1:3002;
По 1) Любой на выбор, главное правильно их сопоставить. 2) Никакие порты наружу не торчат, у Вас все за Nginx и 3) Можете запустить сколько угодно контейнеров, внутри они все будут по 3000 (меняется по желанию) а с наружи (localhost) каждому свой порт.
P.S Упс проглядел, у Вас контейнер наверное FastCGI поэтому proxy_pass http://127.0.0.1:3000; меняйте на fastcgi_pass 127.0.0.1:3000; Но думаю в этих мелочах Вы уже разберетесь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы