docker-compose忽略`configs:`部分

时间:2017-09-13 08:01:40

标签: docker docker-compose docker-swarm

我有一个docker-compose服务定义,其配置部分如下:

# api.yml file
version: '3.3'

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

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

当我使用此文件驱动swarm时,即我使用docker stack deploy ...部署它时,配置文件已正确提供到正在运行的容器中。

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

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

虽然一些措辞似乎表明这仅适用于堆栈,但文档并未明确说明:

  

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

1 个答案:

答案 0 :(得分:2)

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

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

  

注意:Docker配置仅适用于群集服务,不适用于独立容器。要使用此功能,请考虑调整容器以作为服务运行,其比例为1.