如何在Docker镜像中创建具有正确文件权限的用户
如何在Docker镜像中创建具有正确文件权限的用户
我有一个名为
# syntax=docker/dockerfile:1
FROM python:3
# 创建一个用户。
RUN useradd --user-group --system --no-log-init --create-home myuser
RUN chown -R myuser:myuser /home/myuser
USER myuser
# 安装软件包。
RUN python -m pip install --upgrade pip
WORKDIR /home/myuser
COPY . ./mypackage
RUN pip install /home/myuser/mypackage && rm -rf /home/myuser/mypackage
由于myuser在/home/myuser文件夹中没有写入权限,所以pip install失败。如果我在最后一步之前构建镜像,然后查看目录权限,所有权仍然属于root。
$ ls -l
total 4
drwxr-xr-x 3 root root 4096 Aug 16 14:21 mypackage
我猜错误在于chown语句,但我将逻辑从另一个Stack Overflow答案中复制过来,看起来没问题。
我做错了什么?
问题的原因是在Docker镜像中创建用户时,没有正确设置文件权限。解决方法是在COPY命令中指定用户和组,使用--chown选项。
下面是一个修复后的Dockerfile示例:
FROM python:3 # 创建一个用户。 RUN useradd --user-group --system --no-log-init --create-home myuser USER myuser # 安装包。 RUN python -m pip install --upgrade pip WORKDIR /home/myuser COPY --chown=myuser:myuser . ./mypackage RUN pip install /home/myuser/mypackage && rm -rf /home/myuser/mypackage
通过以上方法,可以在Docker镜像中创建一个名为myuser的用户,并正确设置文件权限。这样,在COPY命令中复制文件时,文件将属于myuser用户和myuser组。这解决了文件权限问题,确保用户在Docker容器中具有适当的文件访问权限。