问题描述
想要使用本地git仓库构建docker-compose服务。他在docker-compose.yaml文件中尝试了几种不同的构建方式,但都遇到了错误。他想知道如何正确地使用本地git仓库构建服务。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
Docker和docker-compose不支持直接从本地文件系统的裸仓库进行构建。但是,你可以尝试以下几种解决方法:
1. 直接从Github构建:使用以下命令构建服务:
docker build https://github.com/docker/rootfs.git
- 运行Git守护进程:在本地文件系统上运行Git守护进程,然后使用
git://
协议构建服务。在/home/nou/code
目录下运行以下命令:
git daemon --base-path=. --export-all
- 在Docker中运行Git守护进程:将裸仓库作为卷挂载到Docker中,并通过挂载的Docker套接字在其中构建。这种方法比较复杂,需要一些额外的配置。
- 将裸仓库转换为普通仓库:将裸仓库转换为普通的Git仓库,然后使用普通的Git URL进行构建。
请注意,以上方法中的第2和第3种方法需要在构建之前启动Git守护进程。你可以根据自己的需求选择适合的方法。
方案2
请注意以下操作注意版本差异及修改前做好备份。
你可以尝试以下步骤来使用本地git仓库构建docker-compose服务:
1. 创建一个名为”git”的用户:
sudo adduser git
- 切换到”git”用户并创建一个.ssh目录,并设置权限:
su git
cd ~
mkdir .ssh && chmod 700 .ssh
- 如果你的”nou”用户没有SSH密钥,请在”nou”用户下运行以下命令生成SSH密钥,并接受所有默认设置:
ssh-keygen
- 将”nou”用户的SSH公钥添加到”git”用户的authorized_keys文件中:
sudo cat nou_user_home/.ssh/id_rsa.pub >> git_user_home/.ssh/authorized_keys
- 现在你可以在”nou”用户下使用以下命令构建服务:
docker build git@localhost:/home/nou/code/lib.git
如果你的Dockerfile不在克隆的仓库的根目录下,可以使用以下命令:
docker build -f folder_containing_dockerfile/Dockerfile git@localhost:/home/nou/code/lib.git
如果以上步骤都正常工作,你可以尝试在你的docker-compose文件中使用相同的配置。
正文完