Одна возможность состоит в том, чтобы настроить все приложения в их отдельных контейнерах, а затем подключить их через сеть докеров .
И чтобы охватить все контейнеры, я бы предложил добавитьКонтейнер веб-сервера nginx к сети в качестве обратного прокси-сервера, который затем можно привязать к порту 80 вашей машины.
Затем вы можете либо определить location
для каждого приложения отдельно, либо определить одно общее местоположение, например
# sample.conf
server {
listen 80 default_server;
server_name ~ (?<docker_host_name>.+);
location ~ {
# for actual request forwarding
proxy_pass http://$docker_host_name$1$is_args$args;
# some stuff I figured out I have to use in order for service to work properly
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Эта конфигурация либо должна быть встроена в исходный /etc/nginx/nginx.conf
, либо в отдельный файл, включенный в блок конфигурации http
.
После перезапуска службы nginx илиКонтейнер (в зависимости от настройки контейнера) вы должны быть в состоянии связаться со всеми службами в сети Docker, и все службы должны иметь возможность общаться друг с другом без проблем.
Конечно, вы все равно должны сохранятьзаписей в файле hosts, поэтому ваш компьютер знает, что он должен обрабатывать запрос локально.
Редактировать:
Исходная конфигурация (вероятно) не делает то, что она должна делать.Итак, я придумал более новую версию, которая должна выполнить работу:
# sample.conf
server {
listen 80 default_server;
location ~ {
# for actual request forwarding
proxy_pass http://$host$1$is_args$args;
# some stuff I figured out I have to use in order for service to work properly
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
С этой конфигурацией сервер nginx будет прослушивать все входящие запросы через порт 80 и перенаправлять их в соответствующий контейнер.внутри сети.Вам также не нужно настраивать разрешение хоста самостоятельно, так как имена контейнеров докеров также представляют хост (-name) контейнера.
Надеюсь, это сработает для вас.