我的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
答案 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
此外,appuser不允许在根目录中