Docker中的Python脚本在卷中创建锁定的文件



我有一个带有python的docker容器和一个挂载的卷。该卷包含python脚本和csv等内容。我正在将 csv 复制到该卷内的子目录。它正在工作,但文件具有根所有权并且被锁定,因此无法使用。我需要一个解锁的文件。

在 docker 之外,python 脚本会执行此操作,创建一个没有任何权限问题的解锁文件。我尝试更改chmod。但它不起作用。

Dockerfile:

FROM python:3.5
ADD entrypoint.sh entrypoint.sh
#RUN chmod 755 entrypoint.sh Also did not work
RUN chmod 777 entrypoint.sh 
ENTRYPOINT ./entrypoint.sh

入口点:

cd volume
python copytest.py

copytest.py

import shutil
src = 'df_gent.csv'
dst = 'gent_copy.csv'
shutil.copy2(src, dst)

码头工人命令:

sudo docker build -t copytest .
docker run --name copy_test -v /home/user/Desktop/copytest-docker/:/volume -it copytest bash

Docker 容器正在使用根用户运行。 因此 copytest.py 文件中执行复制命令后,"gent_copy.csv"将由 root 拥有。 在燕鸥中表现为锁定。

您可以在 Dockerfile 中创建与系统上相同的用户。 因此,文件将使用同一用户进行复制。

请检查下面的 Dockerfile(将 XXXXXX 替换为您的本地用户(。

FROM python:3.5
ARG local_user=XXXXXX
RUN useradd -ms /bin/bash $local_user
ADD entrypoint.sh entrypoint.sh
RUN chown $local_user:$local_user entrypoint.sh
USER $local_user
RUN chmod 755 entrypoint.sh 
ENTRYPOINT ./entrypoint.sh

最新更新