docker - 如何在构建时将代码放入 docker 镜像

标签 docker dockerfile

我想在构建时将代码克隆到 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 进行克隆

另外说一下,如果代码被克隆到图像上,我们可以在容器上运行时进行拉取

最佳答案

所以这里有两个真正的范例:

  1. 我正在本地计算机上工作。 在这种情况下,您很可能已经将代码 check out 到本地计算机上。在这里,只需使用 COPY 指令获取整个文件夹并将其放入容器中的某个位置。无需担心 git 或任何类似的问题。

  2. 我让构建服务器执行构建 在这种情况下,让构建服务器检查代码然后执行与上面相同的操作是有意义的。我们只需将 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/

相关文章:

installation - 使用devstack安装docker

docker - 使用 boot2docker 将 docker 容器应用程序端口公开到 Windows 上的主机

保留数据的 Docker 容器

docker - 如何在 "docker build"时间打印变量值(env 或 arg)?

Dockerfile 内置环境变量文档

python - 我在为我的项目运行图像时遇到错误。在这里我试图将我的应用程序dockerize

angular - Docker的 Angular 图像因错误退出

docker - "kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection"仅在列出主题期间

docker - Docker不添加此类文件或目录

cron - 为什么Dockerfile中的cron服务不运行?