Docker命令RUN无法使用git init --bare吗?

时间:2018-02-27 14:31:26

标签: git docker docker-compose dockerfile

我有一个Dockerfile,可以为GIT服务器创建一个图像。

在这个Dockerfile中,有三行对我很重要:

RUN mkdir -p /root/repository
WORKDIR /root/repository
RUN git init --bare

前两行正常工作,但最后一行似乎无法正常工作。它没有提供任何错误输出,但它不会创建repository文件夹中的所有文件/目录。该文件夹为空,但应包含这些文件/文件夹:

-rw-r--r--. 1 root root  23 Feb 27 14:18 HEAD
drwxr-xr-x. 2 root root   6 Feb 27 14:18 branches/
-rw-r--r--. 1 root root  66 Feb 27 14:18 config
-rw-r--r--. 1 root root  73 Feb 27 14:18 description
drwxr-xr-x. 2 root root 242 Feb 27 14:18 hooks/
drwxr-xr-x. 2 root root  21 Feb 27 14:18 info/
drwxr-xr-x. 4 root root  30 Feb 27 14:18 objects/
drwxr-xr-x. 4 root root  31 Feb 27 14:18 refs/

当我通过docker exec访问docker容器并手动执行git init --bare时 - 一切似乎都很好......

执行docker exec -it CONTAINER_ID git init --bare完美无缺...

我做错了什么?

2 个答案:

答案 0 :(得分:1)

它必须是Dockerfile中的环境设置或您使用的基本映像。以下最小示例有效:

FROM alpine:latest
RUN apk update && apk add git

RUN mkdir -p /root/repository
WORKDIR /root/repository
RUN git init --bare

例如,您可以验证未在基本映像中设置$ GIT_DIR,或者验证docker build的构建参数。如果已设置,git init --bare将在$ GIT_DIR而不是/root/repository

中初始化回购

答案 1 :(得分:0)

我有同样的问题。

发现我继承的Dockerfile将目录声明为volume,这似乎不起作用。 ;)

原始Dockerfile

/opt/something/my_stuff

我原来的Dockerfile

{{1}}

只需将{{1}}更改为{{1}}