我有一个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
部分吗?
虽然一些措辞似乎表明这仅适用于堆栈,但文档并未明确说明:
注意:配置必须已存在或在此堆栈文件的顶级配置配置中定义,否则堆栈部署将失败。
答案 0 :(得分:2)
使用swarm模式提供的嵌入式筏键值存储实现配置和机密。这些功能对于尚未作为swarm模式的一部分运行的容器是不可用的,因此docker-compose会忽略它们。
https://docs.docker.com/engine/swarm/configs/#about-configs
注意:Docker配置仅适用于群集服务,不适用于独立容器。要使用此功能,请考虑调整容器以作为服务运行,其比例为1.