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

时间:2019-07-02 03:00:06

标签: bash shell docker docker-compose

我可以像这样执行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命令替换,但是不能。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

尝试this

因此,您需要输入:

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

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

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

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

答案 1 :(得分: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 的更改