Я новичок в Докере.И у меня была задача - создать Docker-контейнер с nginx, который будет отправлять php (динамический) в Apache Docker-контейнер.
Я решил свою проблему.Но я провел много времени.Поэтому я надеюсь, что это поможет другим людям
Есть много статей - как собрать nginx + apache ... Но они не работают в Docker
Моя проблема была решена путем изменения файла конфигурации nginx(my.conf | default ...)
от:
upstream backend {
server 127.0.0.1:8080;
}
до:
upstream backend {
server apache2php:8080;
}
где apache2php - это имя службы в docker-compose.yml
примерно так:
version: "3"
services:
apache2php:
image: apache2php
ports:
- "8080:8080"
volumes:
- "/var/www/html:/var/www/html"
mynginx:
image: mynginx
ports:
- "80:80"
volumes:
- "/var/www/html:/var/www/html"
Когда я проверял журналы (/ var / log / nginx / error.log) в контейнере nginx с моими неверными настройками я обнаружил ошибку 111 (Соединение было отклонено при подключении к восходящему каналу)
А также не было моего локального ip (127.0.0.1) в поле Host, а другого (например,10.5.100.2 - может быть другой)
Я думаю, что докер использует свои собственные ip-адреса в сети докера и что IP-адреса используются контейнерами докера (nginx использует 10.5.100.2:8080, когда нужно перенаправить файл phpв apache)
Но когда мы переходим к 127.0.0.1:80 во внешней сети (например, когда мы набираем thIP в браузере) Docker переводит внутренний IP (nginx - 10.5.100.2:80) в внешний IP, который мы вводим позже (127.0.0.1:80)
Прав ли я?