如何在同一台机器上使用 docker 为一个项目托管多个环境?

詹姆斯·林

我有一个由一个典型的网络堆栈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

现在我想知道我怎么可以设置DEVQA环境的单一机器上。我可以更改djangodatabase容器以侦听不同的端口,但看起来我无法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 80listen your_ip:80,然后它将不会侦听所有 ip 地址。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在opensuse中在同一台机器上的VM和docker之间共享目录?

如何与群管理器在同一台机器上运行docker群节点?

同一个docker映像在一台机器上工作而在另一台机器上失败

是否可以在同一台机器上启动多个docker守护程序

如何从运行在同一台机器上的 Spring boot docker 容器访问 RabbitMQ 服务(在主机上)

在同一台机器上运行docker的情况下删除libvirt

如何从本地网络上的另一台机器访问Docker容器

所有docker swarm实例都可以在同一台机器上运行吗?

如何将tracktrack,upsource和teamcity连接到集线器,这些集线器都在同一台机器上作为docker容器运行

如何在同一台机器上运行多个 Apache Ignite 节点?

如何在同一台机器上运行多个硒测试套件

如何在同一台机器上设置不同的 Scala 版本?

如何在 VMware 和 Virtualbox 上运行同一台机器?

如何在同一台机器上安装opencv 2.4和opencv 3

如何在同一台机器上从 Windows SSH 进入 WSL

如何配置Apache在同一台机器上与FE和BE一起使用?

如何在一台机器上编译幻象,然后在另一台机器上“移植”?

如何在一台机器上运行一个外壳的多个版本

如何在一台机器上使用socat测试多播

如何在一台机器上使用GitLab和Gitlab-Mattermost?

如何将Docker卷从一台机器复制到另一台机器?

如何从局域网上的另一台机器访问Docker容器

IPC在同一台机器上... WCF

debian和ubuntu在同一台机器上

如何在灵活的车间中编码操作的后继者在同一台机器上完成?

如何在同一台机器的不同GPU上并行运行许多TensorFlow实例?

如何在同一台机器上安装 Windows Server 2012 和 Ubuntu 16.04 桌面

在同一台机器上使用github和公司的gitlab时如何使用不同的用户?

同一台机器上的两个Tomcat实例使用相同的日志文件