2017-08-12 149 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服務啓動每個進程,但對您的用例來說可能過大。