В этом проекте у меня есть контейнер докера Apache (называемый loadbalancer), который указывает на один из двух контейнеров докера Apache.Если путь "/ support *", то он идет в контейнер поддержки, в противном случае он идет в веб-приложение.В настоящее время для достижения этой цели я жестко запрограммировал подсеть для создания сетей подсети и каждого контейнера IPv4-адрес.Затем файл Apache Conf просто указывает на эти жестко закодированные ips.Это прекрасно работает для локальных сред разработки.
Однако оно не работает для промежуточных серверов, на которых необходимо разместить несколько экземпляров проекта.Я не могу раскрутить более одного экземпляра этой сети, из-за жестко закодированных адресов подсети / ipv4.Как я могу выполнить эту настройку балансировки нагрузки без жесткого кодирования подсети, чтобы я мог иметь несколько экземпляров.Или есть лучшее решение для достижения желаемого эффекта размещения множества копий на одном сервере, например, множества vhosts в контейнере apache.Что ты предлагаешь?Поскольку я не имею ни малейшего представления о том, что было бы здесь лучше всего.
loadbalancer.conf
<VirtualHost *:80>
TimeOut -1
ProxyPass "/support" "http://172.20.0.5/support"
ProxyPassReverse "/support" "http://172.20.0.5/support"
ProxyPass "/" "http://172.20.0.2/"
ProxyPassReverse "/" "http://172.20.0.2/"
ProxyPreserveHost On
TimeOut -1
</VirtualHost>
docker-compose.yml
version: '3.7'
networks:
pi-net:
ipam:
config:
- subnet: 172.20.0.0/24
services:
cli:
container_name: cli
build: ./docker/cli
networks:
pi-net:
ipv4_address: 172.20.0.3
volumes:
- type: bind
source: .
target: /srv/www
- type: bind
source: $HOME/.gitconfig
target: /home/developer/.gitconfig
extra_hosts:
- "pi.docker:172.20.0.2"
user: developer
stdin_open: true
tty: true
environment:
GIT_PAGER: cat
webapp:
container_name: webapp
build:
context: ./docker/web-server
args:
- vhostsFileName=webapp.conf
networks:
pi-net:
ipv4_address: 172.20.0.2
ports:
- 80
volumes:
- type: bind
source: .
target: /srv/www
# depends on cli because cli entrypoint.sh is creating var/ files needed by httpd
depends_on:
- "cli"
support:
container_name: support
build:
context: ./docker/web-server
args:
- vhostsFileName=support.conf
networks:
pi-net:
ipv4_address: 172.20.0.5
ports:
- 80
volumes:
- type: bind
source: .
target: /srv/www
# depends on cli because cli entrypoint.sh is creating var/ files needed by httpd
depends_on:
- "cli"
loadbalancer:
container_name: loadbalancer
build:
context: ./docker/web-server
args:
- vhostsFileName=loadbalancer.conf
networks:
pi-net:
ipv4_address: 172.20.0.6
ports:
- 80:80
db:
container_name: db
build: ./docker/mysql
networks:
pi-net:
ipv4_address: 172.20.0.4
ports:
- 3306:3306
volumes:
- db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: pi
MYSQL_USER: root
MYSQL_PASSWORD: root
restart: always
volumes:
db:
driver: local