2017-08-12 126 views
0

内部连接的Redis当我开始泊坞容器我得到Unnable从泊坞容器

OSError: Multiple exceptions: [Errno 111] Connect call failed ('::1', 6379), [Errno 111] Connect call failed ('127.0.0.1', 6379) 

从Python,但这个代码工作正常的主机上。如何解决这个问题?

Dockerfile:gist,OS:MacOS的10.12

+0

您在Dockerfile中使用多个CMD语句。只有最后一个“胜出”,所以'redis-server'没有启动。请考虑将Dockerfile分成两个单独的文件,或者将[redis-server]替换为[官方映像](https://hub.docker.com/r/library/redis/)。 – gesellix

+0

本文解释了如何通过网络连接不同容器的几个选项:https://docs.docker.com/engine/userguide/networking/ – gesellix

+0

@gesellix我无法拆分文件,也无法使用官方图像。也许有一种方法可以在一个Dockerfile中运行redis-server和python脚本? – 0x1337

回答

1

您只能有一个CMD声明。要在单个容器中启动redis-serverpython,您需要定义脚本或运行诸如supervisord之类的工具来管理您的流程。 https://docs.docker.com/engine/admin/multi-service_container/解释了一些选项,并给出了例子。在你的情况下,我会尝试使用shell脚本。 Phusion基础镜像https://github.com/phusion/baseimage-docker是一个更高级的替代方案,通过init服务启动每个进程,但对您的用例来说可能过大。