跨容器端口转发

时间:2018-12-10 14:36:50

标签: docker docker-compose

出于学习目的,我正在从事django项目。我使用db容器(只是带有几个设置的postgresql)和带有python-django堆栈的web容器创建了一个docker-compose安装程序。这是我的docker-compose.yml文件的简化版本:

version: '3'
services:
  db:
    image: postgres
    expose:
      - "5432"
  web:
    build: .
    command: python /app/manage.py runserver 0.0.0.0:8000
    depends_on:
      - db

这将打开数据库。我可以从主机访问数据库,这非常方便,因为我可以轻松查看数据库并进行一些编辑。

我也可以使用web容器中django实例中的数据库,只需在django配置中使用db作为数据库主机名即可。

这意味着,如果我想从主机运行测试,或者运行服务器并对其进行调试,则可以使用localhost作为数据库主机,它将连接,并且如果我要运行应用程序在web容器中以“生产”模式进行操作时,我必须编辑django的设置以更改数据库主机。

我应该如何处理“调试模式”和“生产模式”之间的这种差异?很明显,我可以在设置文件中有一个标志,可以根据环境变量设置或不设置标志,也可以将数据库主机名本身放在一个env var中,但是这种解决方案并不令我满意。

经过一番研究,我发现this oldish question的答案是

  

Docker将很快允许启动一个共享网络的容器   另一个容器的命名空间

以及此非常有趣的文章的链接:Jumpers and the Software Defined Localhost

根据这些内容,可以引用localhost容器中web的端口,并将查询转发到db容器的该端口。好吧,我想这就是我想要的。但是我找不到其他参考资料。

最后,我想问一下我是在过度设计还是在做一些根本上错误的事情。

0 个答案:

没有答案