2017-05-29 14 views
1

我有单块应用程序,我试图containerize。 foler结构是这样的:取决于其他容器中的文件的码头集装箱

--app 
    | 
    |-file.py <-has a variable foo that is passed in 

--configs 
    | 
    |-variables.py <- contains foo variable 

现在,我有一个容器中的应用程序和容器中的配置。当我尝试启动应用程序容器时,它失败了,因为依赖于配置容器变量。

我在做什么错了?我该如何处理这个问题。应用程序和配置现在应该放在一个大容器中吗?

我在想Docker-compose可以解决这个问题。思考?

回答

1

的variables.py文件可能是(在)由您从config容器导入具有--volumes-from config选项docker runapp容器访问的体积。使用Docker Compose,您可以使用volumes_from指令。

-1

以下推荐的方法 -

  1. 首先运行配置容器,它有自己的docker.sock
  2. 您可以通过-v "/var/run/docker.sock:/var/run/docker.sock"将上述Docker套接字安装在第一个应用容器中,这会让App容器访问配置容器,但我认为这需要特权访问。
  3. 这与Docker概念中的Docker类似。

你也可以考虑通过HTTP服务foo变量来改变你的应用程序,这将导致更简单的解决方案。您可以在Python中使用简单的Web服务器和urllib3模块,以获得一个简单的解决方案,通过内部Docker网络为变量提供服务。

+0

安装Docker插座需要麻烦。在违规情况下,任何人都可以惹恼其他容器和主机本身。 –

+0

@RicardoBranco - 是的,这是在特权下运行容器时可接受的风险。这就是为什么我提到它不是一个推荐的方式,但是如果有人想在私人环境中使用它,那么它就是关于功能风险的权衡。 –