docker-compose 忽略 `configs:` 部分

sas*_*sas 6 docker docker-compose docker-swarm

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

# api.yml file
version: '3.3'

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

configs:
  api_config:
  file: ./config/my.cfg
Run Code Online (Sandbox Code Playgroud)

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

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

configs部分不与普通支持docker-compose使用?

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

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

BMi*_*tch 5

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

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

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