https://docs.docker.com/compose/compose-file/compose-file-v3/
Configs 允许存储一些非敏感信息,比如在容器运行之外的一些配置文件。这种方式可以保证docker镜像更加通用,而不需要将配置文件或者是环境变量绑定到容器。对于敏感信息,比如数据库账号之类的,建议使用secrets
与secrets不同之处在于,configs并没有对数据进行加密,而是直接把配置文件挂载到容器的文件系统中。同时允许任何时刻删除或者添加configs,也可以共享configs;为了支持更高灵活性,
configs内容可以是普通的字符串或者是二进制内容,当然二进制要保证大小在512kb之内
#创建
docker config create new_config ./config.yaml
docker config ls
docker config inspect conf
对conf进行base64解码
docker config inspect -f '{{json .Spec.Data}}' conf
删除secret
docker config rm conf2
#update 删除旧的,添加新的configs
docker service update --force --config-rm old_config \
--config-add source=new_config,target=/bootstrap.yaml
使用
docker run --config source=conf,target=/etc/nginx/conf.d/default.conf
services:
nginx:
configs:
- source: nginx.conf
target: /etc/nginx/nginx.conf
uid: '103'
gid: '103'
mode: 0440
- my_other_config
configs:
nginx.conf:
file: /etc/nginx/nginx.conf
my_other_config:
external: true
services:
nginx:
configs:
- source: nginx.conf-${env.CONFIG_VERSION}
target: /etc/nginx/nginx.conf
configs:
nginx.conf-${env.CONFIG_VERSION}:
file: /etc/nginx/nginx.conf
CONFIG_VERSION=$(date +%s) docker stack deploy --compose-file docker-stack.yml stackname
environment:
- "A=a"
- "B=b"
env_file:
- ./env_files/configs.env