【问题标题】:Docker container that depends on file in other container依赖于其他容器中文件的 Docker 容器
【发布时间】:2017-05-29 18:21:02
【问题描述】:

我有一个要容器化的单体应用程序。文件夹结构是这样的:

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

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

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

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

我在想 docker-compose 可以解决这个问题。想法?

【问题讨论】:

    标签: docker containers docker-compose


    【解决方案1】:

    variables.py 文件可以是由app 容器访问的卷,您从config 容器导入--volumes-from config 选项到docker run。使用 Docker Compose,您将使用 volumes_from 指令。

    【讨论】:

      【解决方案2】:

      不太推荐的方式-

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

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

      【讨论】:

      • 安装 Docker 套接字是自找麻烦。在发生违规的情况下,任何人都可以弄乱其他容器和主机本身。
      • @RicardoBranco - 是的,这是在特权下运行容器时可接受的风险。这就是为什么我提到它不是推荐的方式,但是如果有人想在私人环境中使用它,那就是功能风险权衡。
      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 2022-01-22
      相关资源
      最近更新 更多