我可以像这样执行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命令替换,但是不能。
有没有办法做到这一点?
答案 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 的更改