如何在 Docker Compose 中设置 uid 和 gid?

新手上路,请多包涵

我可以像这样执行 docker run 命令…

 docker run --rm  --user $(id -u):$(id -g) -e MYDATA=/some/path/to/data -e USER=$USER -p 8883-8887:8883-8887 ...

但是,在 Docker Compose 中,当我写出以下内容时…

 version: '3.7'
services:
  container_name: some-server
  image: some:img
  user: $(id -u):$(id -g)
  ...

… 这没用。

我知道我要求 docker-compose up 执行子 shell 命令替换,但它不能。

有没有办法做到这一点?

原文由 ingyhere 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 7.3k
2 个回答

试试 这个

所以,你需要把:

 user: "${UID}:${GID}"

在您的 docker compose 中并提供 UID 和 GID 作为 docker-compose 参数

UID=${UID} GID=${GID} docker-compose up

(或将 UID 和 GID 定义为环境变量)。

原文由 Edward Aung 发布,翻译遵循 CC BY-SA 4.0 许可协议

这也可以做到

在你的 docker-composer.yml

 user: $DOCKER_USER

在命令行中

echo 'export DOCKER_USER="$(id -u):$(id -g)"' >> ~/.bash_profile

source ~/.bash_profile

docker-compose up

创建了一个 DOCKER_USER 变量并将其添加到 bash_profile 中以实现持久性。源代码将帮助 shell 按需识别 .bash_profile 的变化

原文由 Amitesh Bharti 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题