【问题标题】:docker-compose ignores `configs:` sectiondocker-compose 忽略 `configs:` 部分
【发布时间】:2017-09-13 08:01:40
【问题描述】:

我有一个带有配置部分的 docker-compose 服务定义,如下所示:

# api.yml file
version: '3.3'

services:
  api:
    ...
    configs:
      - source: api_config
        target: /env.cfg

configs:
  api_config:
  file: ./config/my.cfg

当我使用这个文件来驱动一个集群时,即我使用docker stack deploy ... 部署它时,配置文件被正确地提供到正在运行的容器中。

但是,当我尝试通过docker-compose -f api.yml up 运行本地版本的 api 时,我得到一个启动失败,抱怨我的 api 服务找不到它的配置。 (注意:docker-compose 本身不会报告任何错误。)

普通的docker-compose 用法不支持configs 部分吗?

文档没有明确说明,尽管某些措辞似乎表明这仅适用于堆栈:

注意:该配置必须已经存在或定义在此堆栈文件的顶级配置配置中,否则堆栈部署将失败。

【问题讨论】:

  • 你是怎么处理的?有什么解决方法可以在 Docker Compose 中使用 Swarm 中的 Docker Configs 部分?每次都要修改本地的yml文件吗?
  • 已经有一段时间了,但 IIRC 我想我只是把我的本地环境变成了一个单节点群。

标签: docker docker-compose docker-swarm


【解决方案1】:

使用 swarm 模式提供的嵌入式 raft 键值存储来实现配置和机密。这些功能不适用于尚未作为 swarm 模式的一部分运行的容器,因此它们将被 docker-compose 忽略。

https://docs.docker.com/engine/swarm/configs/#about-configs

注意:Docker 配置仅适用于 swarm 服务,不适用于独立容器。要使用此功能,请考虑调整您的容器以作为规模为 1 的服务运行。

【讨论】:

    【解决方案2】:

    是的,根据这个github issuedocker compose 不支持configs。我只是在阅读文档后浪费时间尝试它。您需要编写自定义 Dockerfile 来构建配置文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2022-01-03
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多