我有一个由一个典型的网络堆栈nginx
+ django
+database
组件。
我已经将它们设置在不同的 docker 容器中,docker-compose
并且运行良好。
services:
billing_app_dev:
image: jameslin/billing_app:latest
expose:
- 8000
billing_postgres:
image: postgres:10.5
restart: always
volumes:
- pg_data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
billing_nginx:
image: jameslin/billing_nginx:${TAG}
volumes:
- app_files:/static
links:
- 'billing_app'
ports:
- 80:80
现在我想知道我怎么可以设置DEV
和QA
环境的单一机器上。我可以更改django
和database
容器以侦听不同的端口,但看起来我无法nginx
单独运行容器,因为端口 80 只能由一个容器侦听。
我将不得不nginx
为这两个看起来不太干净的环境共享容器。
如果无法运行 2 个虚拟机,是否有更好的想法?
我认为你需要的是virtual ip
或者可能被称为ip aliasing
. 即使你只有一张网卡,你仍然可以在上面设置2个ip。
然后,您可以在主机上设置 2 个不同的 nginx 容器,并使用不同的 ip 但相同的 80 端口。
类似如下:
cd /etc/sysconfig/network-script/
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1
# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth0:1 ----> sub network card
HWADDR=00:0C:29:45:62:3B
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.109.108 ----> configure a new different ip
NETMASK=255.255.255.0
详细信息是指为一个网络接口创建多个 IP 地址
对于nginx
,从nginx 指南中,您必须更改 nginx docker 以修改listen 80
为listen your_ip:80
,然后它将不会侦听所有 ip 地址。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句