Dockerfile git克隆文件权限

Dockerfile git克隆文件权限,git,docker,Git,Docker,我的Dockerfile设置为使用用户“astro”。 在Dockerfile中,我克隆了Git回购: FROM astronomerinc/ap-airflow:0.9.0-1.10.3-onbuild ENV GITHUB_TOKEN **** RUN git clone https://token@github.com/owner/my-git-project.git drwxr-xr-x 7 astro astro 224 Jul 10 14:42 my-

我的Dockerfile设置为使用用户“astro”。
在Dockerfile中,我克隆了Git回购:

FROM astronomerinc/ap-airflow:0.9.0-1.10.3-onbuild
ENV GITHUB_TOKEN ****
RUN git clone https://token@github.com/owner/my-git-project.git
drwxr-xr-x    7 astro    astro          224 Jul 10 14:42 my-python-proj
drwxr-xr-x    1 root     root          4096 Jul 10 18:47 folder_b
drwxr-xr-x    2 root     root          4096 Jun 27 09:19 folder_c
drwxr-xr-x    1 root     root          4096 Jul 10 18:47 my-git-project
最后是root:root权限,这并不理想,因为我在Dockerfile中有一个Python脚本,它应该更新Git repo的内容:

FROM astronomerinc/ap-airflow:0.9.0-1.10.3-onbuild
ENV GITHUB_TOKEN ****
RUN git clone https://token@github.com/owner/my-git-project.git
drwxr-xr-x    7 astro    astro          224 Jul 10 14:42 my-python-proj
drwxr-xr-x    1 root     root          4096 Jul 10 18:47 folder_b
drwxr-xr-x    2 root     root          4096 Jun 27 09:19 folder_c
drwxr-xr-x    1 root     root          4096 Jul 10 18:47 my-git-project
如何确保Dockerfile默认用户可以写入Github repo?(简单的chown似乎没有帮助,因为后续的git拉取将添加具有仅根权限的文件夹。)

后来我有了一个Python脚本,它可以写入这个repo:

some_script.py
def makeDirsAndCommit
   //writes some dirs to git repo folder
   //runs git add . 
   //runs git commit

如果user
astro
不存在,您可以在dockerfile中创建该用户,并将该用户切换为新创建的用户,以便对该用户运行后续命令。您还可以在生成期间拥有任何文件夹

我不确定你的基本docker是否存在,如果用户不存在,请切换,然后创建一个,但这就是使用alpine实现这一点的方法[github中的nodejs示例]

FROM alpine:3.8
# install git 
RUN apk --no-cache add git openssh
# create user named appuser


RUN addgroup -S appgroup && adduser -S appuser -G appgroup  
RUN mkdir -p /opt/nodejs
# own folder testing
RUN chown -R /opt/nodejs
# switch the user to appuser
USER appuser
RUN whoami

# Test some folder 
RUN mkdir /home/appuser/foldera
RUN mkdir /home/appuser/folderb
RUN  git clone https://github.com/Adiii717/nodejs-helloworld.git /home/appuser/nodejs-app;
构建docker形象

docker build -t test .
运行容器

docker run -it --rm --name test test ash -c "tail -f /dev/null"
以appuser身份执行命令

docker exec -it -u appuser test ash
验证文件夹权限

此外,appuser将不允许在根目录中


如果user
astro
不存在,您可以在dockerfile中创建该用户,并将该用户切换为新创建的用户,以便对该用户运行后续命令。您还可以在生成期间拥有任何文件夹

我不确定你的基本docker是否存在,如果用户不存在,请切换,然后创建一个,但这就是使用alpine实现这一点的方法[github中的nodejs示例]

FROM alpine:3.8
# install git 
RUN apk --no-cache add git openssh
# create user named appuser


RUN addgroup -S appgroup && adduser -S appuser -G appgroup  
RUN mkdir -p /opt/nodejs
# own folder testing
RUN chown -R /opt/nodejs
# switch the user to appuser
USER appuser
RUN whoami

# Test some folder 
RUN mkdir /home/appuser/foldera
RUN mkdir /home/appuser/folderb
RUN  git clone https://github.com/Adiii717/nodejs-helloworld.git /home/appuser/nodejs-app;
构建docker形象

docker build -t test .
运行容器

docker run -it --rm --name test test ash -c "tail -f /dev/null"
以appuser身份执行命令

docker exec -it -u appuser test ash
验证文件夹权限

此外,appuser将不允许在根目录中


更新了更多相关内容@michalk更新了更多相关内容@michalk