Dockerfile git clone文件权限

时间:2019-07-10 19:04:56

标签: 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

这以root:root权限结束,这并不理想,因为我在此Dockerfile中有一个Python脚本,该脚本应该更新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存储库? (简单的chown似乎无济于事,因为后续的git pull将添加具有root用户权限的文件夹。)

后来我有一个Python脚本写入此仓库:

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

1 个答案:

答案 0 :(得分:0)

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

我不确定您的基本docker是否存在(如果用户存在),只需切换即可,然后创建一个,但这就是您可以使用alpine [github上的nodejs-example]来做到这一点的方法

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

验证文件夹权限 enter image description here

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

enter image description here