自动构建镜像可以:

  • 方便查看 Dockerfile 。
  • 代码变化后仓库会自动更新。

链接GitHub

需要链接GitHub,这样,GitHub那边项目代码变化时,DockerHub这边才能相应的被触发。

官方的英文说明在这:

https://docs.docker.com/docker-hub/builds/link-source/

我操作过程中,也截图了一部分:




github中如何部署docker镜像 github docker_github怎么自动更新被人更新过的项目


github中如何部署docker镜像 github docker_github怎么自动更新被人更新过的项目_02


因为已经操作过了,剩下的就将官网的2个图放出下,按提示操作就可以了:


github中如何部署docker镜像 github docker_php_03


github中如何部署docker镜像 github docker_php_04


GitHub上创建项目

以教女朋友学web开发的项目 teaching_gf_web_develop 为例子

第1步: New repository


github中如何部署docker镜像 github docker_docker_05


第2步:填写项目信息:


github中如何部署docker镜像 github docker_github怎么自动更新被人更新过的项目_06


这儿需要将main设置为我们的主分支名称,点击settings:


github中如何部署docker镜像 github docker_docker_07


设置好后重新去写相关的信息,应该以后新的项目就不要再次设置了吧(未尝试,主分支名这事件有兴趣可以去搜索下Master 分支种族歧视这样的字眼):


github中如何部署docker镜像 github docker_docker_08


现在可以创建了。我以后会基于Codeigniter和vue(本文不包括进来),忽略文件模板就选择Codeigniter的好了。

现在这个项目部分就准备好了。


github中如何部署docker镜像 github docker_自动构建_09


https://github.com/virhuiai/teaching_gf_web_develop.git

Docker Hub上新建Repository

https://hub.docker.com/repositories


github中如何部署docker镜像 github docker_github中如何部署docker镜像_10


名字也叫teaching_gf_web_develop.git吧


github中如何部署docker镜像 github docker_github中如何部署docker镜像_11


可以看到,这边能看到我们在GitHub上的新建的这个项目了(需要链接过你的 Github),选中。

下边有BUILD RULES:


github中如何部署docker镜像 github docker_github怎么自动更新被人更新过的项目_12


我们可以再点下面的例子看看:


github中如何部署docker镜像 github docker_github中如何部署docker镜像_13


最终,我写的是:

/^v[0-9.]+/
version-{1}

这会直接点创建就好了,我们GitHub上的项目里目前还没有Dockerfile。下次提交的tag符合我们设置的正则就会触发自动构建了。

git的tag提交

代码克隆下来,并添加Dockerfile文件:

FROM php:7.4.8-apacheWORKDIR /var/www/html/RUN mkdir /virhuiai/ && echo "#!/bin/bash" >> /virhuiai/initFirstPhp.sh && echo "if [ ! -f '/virhuiai/index.php' ];then" >> /virhuiai/initFirstPhp.sh && echo "  echo '<?php phpinfo();' > /var/www/html/index.php" >> /virhuiai/initFirstPhp.sh && echo "fi" >> /virhuiai/initFirstPhp.sh

可以使用idea类的ide,


github中如何部署docker镜像 github docker_php_14


我们给它打上tag:


github中如何部署docker镜像 github docker_自动构建_15


提交时勾上Tag,刚刚已经提交了忘记截图,所以这会没显示什么内容:


github中如何部署docker镜像 github docker_php_16


第一次时会要输入GitHub的密码:


github中如何部署docker镜像 github docker_docker_17


Docker的自动构建:

这会到DockerHub上,


github中如何部署docker镜像 github docker_github中如何部署docker镜像_18


就可以看到在构建了:


github中如何部署docker镜像 github docker_docker_19


这需要一会,再去看,就能看到成功了:


github中如何部署docker镜像 github docker_docker_20


这时我们就能在本地拉取了:


github中如何部署docker镜像 github docker_docker_21


启动容器:

docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html virhuiai/teaching_gf_web_develop:lasted

进入容器运行初始化一个显示phpinfo()的脚本,

docker exec -it 9716fb75aded /bin/sh
/bin/bash /virhuiai/initFirstPhp.sh

此时打开本地浏览器就能看到效果:


github中如何部署docker镜像 github docker_自动构建_22