我可以执行docker run
命令。
docker run --rm --user $(id -u):$(id -g) -e MYDATA=/some/path/to/data -e USER=$USER -p 8883-8887:8883-8887 ...
但是,在码头组合中,当我写下以下内容...
version: '3.7'
services:
container_name: some-server
image: some:img
user: $(id -u):$(id -g)
...
...它不起作用。
我知道我要docker-compose up
执行子壳命令替换,并且不能。
有什么方法可以做到吗?
尝试此
所以,您需要放置:
user: "${UID}:${GID}"
在您的Docker中,并提供UID和GID作为Docker-Compose参数
UID=${UID} GID=${GID} docker-compose up
(或将UID和GID定义为环境变量(。
这可以做到这一点
在您的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中以持续。源将帮助外壳识别.bash_profile按需
在docker build上添加以下命令行参数图像:
docker build --build-arg UID="$(id -u)" --build-arg GID="$(id -g)" --build-arg UNAME="$(whoami)" . -t tagname -f docker.recipe
在Docker食谱开始时附加以下行:
FROM ubuntu:18.04 AS yoursystem
ARG UID
ARG GID
ARG UNAME
RUN groupadd -g ${GID} -o ${UNAME}
RUN useradd -m -u ${UID} -g ${GID} -o -s /bin/bash ${UNAME}