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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker命令RUN无法使用git init --bare吗?相关的知识,希望对你有一定的参考价值。

我有一个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工作完美...

我究竟做错了什么?

答案

它必须是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中初始化回购

以上是关于Docker命令RUN无法使用git init --bare吗?的主要内容,如果未能解决你的问题,请参考以下文章

docker run常用命令及 解决 ubuntu镜像无法识别 ifconfig ping 命令

Kubernetes 相当于 `docker run --init`

docker run 最后一个参数/bin/bash和/usr/sbin/init有什么区别?(/usr/sbin/init 启动容器之后可以使用systemctl方法)

docker run 最后一个参数/bin/bash和/usr/sbin/init有什么区别?(/usr/sbin/init 启动容器之后可以使用systemctl方法)

Docker下构建centos7容器无法使用systemctl命令的解决办法

docker run mssql