我想在构建时将代码克隆到 docker 镜像
我正在考虑在 git clone 时传递 ssh key ,但这不起作用。下面是我正在使用的命令,显示权限被拒绝
ssh-agent bash -c 'ssh-add /home/username/.ssh/id_rsa.pub my keys; git clone ssh://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="44232d3004282b2725302d2b2a6a232d30" rel="noreferrer noopener nofollow">[email protected]</a>'
我无法使用 https 进行克隆
另外说一下,如果代码被克隆到图像上,我们可以在容器上运行时进行拉取
最佳答案
所以这里有两个真正的范例:
我正在本地计算机上工作。 在这种情况下,您很可能已经将代码 check out 到本地计算机上。在这里,只需使用 COPY 指令获取整个文件夹并将其放入容器中的某个位置。无需担心 git 或任何类似的问题。
我让构建服务器执行构建 在这种情况下,让构建服务器检查代码然后执行与上面相同的操作是有意义的。我们只需将 checkout 的代码复制到图像中
最后,适用于 PHP、JS 等动态语言的另一种选择是不将代码放入镜像中,而是在运行时将代码安装到容器上。
我们以 PHP 为例。如果网络服务器正在/var/www/html 中查找代码,您可以像这样运行您的图像:
docker run -d --name {containername} -p 80:80 -p 443:443 -v /my/dir/where/code/is:/var/www/html {your base image}
上面将创建图像,但会将您的本地目录传递到/var/www/html 目录,这意味着您在本地所做的任何更改都将出现在容器的源代码中。在 Composer 稳定之前,这在 Vagrant 和 docker 的早期使用得更为突出。
关于docker - 如何在构建时将代码放入 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53078284/