我的环境是Ubuntu 18.04 VPS。
我无法在Docker容器中使用基于文件的机密来与mariadb一起使用。
Locale variable 'a' value is not used
:docker-compose.yml
version: '3.7'
services:
db:
image: mariadb:10.4.8-bionic
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/password_root
- MYSQL_PASSWORD_FILE=/run/secrets/password_user
- MYSQL_DATABASE=database
- MYSQL_USER=admin
secrets:
- password_root
- password_user
secrets:
password_root:
file: .secret_password_root
password_user:
file: .secret_password_user
(请注意,我可以设置444,但这会在主机上公开密钥文件,这是一个非常糟糕的主意。)
echo -n secret > .secret_password_root
echo -n secret > .secret_password_user
chown root:root .secret_password*
chmod 400 .secret_password*
错误:
db_1 | /usr/local/bin/docker-entrypoint.sh:第37行:/ run / secrets / password_root:权限被拒绝
根据the docs,秘密文件应以docker-compose up
的形式挂载,但这显然没有发生。
答案 0 :(得分:1)
显然,this is not supported表示“ docker compose”,仅表示“ docker swarm”。这些文档具有误导性。
答案 1 :(得分:0)
提示在这里:
chown root:root .secret_password* # set root as owner
chown 400 .secret_password* # set `400` as owner
用`chmod替换chown
:
chown root:root .secret_password*
chmod 400 .secret_password*