docker compose 中的秘密

2023-11-22

我的环境是ubuntu 18.04 VPS。

我无法获取基于文件的机密来与 Docker 容器中的 mariadb 一起使用。

  1. create 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
  1. 创建秘密:
echo -n secret > .secret_password_root
echo -n secret > .secret_password_user
chown root:root .secret_password*
chmod 400 .secret_password*

(请注意,我可以设置 444,但这会暴露主机上的机密文件,这是一个非常糟糕的主意。)

  1. run:
docker-compose up

Error:

db_1 | /usr/local/bin/docker-entrypoint.sh:第 37 行:/run/secrets/password_root:权限被拒绝

根据the docs,机密文件应安装为0444,但这显然没有发生。


显然不支持此功能对于“docker compose”,仅适用于“docker swarm”。这些文档具有误导性。

Docker Compose 不支持真正的 (swarmkit) 秘密,而是通过将文件直接绑定安装到容器中来模仿它们(这意味着主机上的权限与容器中的权限相同)。

您可以更改主机上文件的所有权以匹配容器中用户的 uid/gid,但不幸的是,否则我认为没有什么可以做的

2023 年更新

如果你想要这个功能,请投票此功能请求在回购协议上,和/或添加您的意见,以便开发人员知道我们多么需要此功能。谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker compose 中的秘密 的相关文章

随机推荐