自动构建镜像可以:
- 方便查看 Dockerfile 。
- 代码变化后仓库会自动更新。
链接GitHub
需要链接GitHub,这样,GitHub那边项目代码变化时,DockerHub这边才能相应的被触发。
官方的英文说明在这:
https://docs.docker.com/docker-hub/builds/link-source/
我操作过程中,也截图了一部分:
因为已经操作过了,剩下的就将官网的2个图放出下,按提示操作就可以了:
GitHub上创建项目
以教女朋友学web开发的项目 teaching_gf_web_develop 为例子
第1步: New repository
第2步:填写项目信息:
这儿需要将main设置为我们的主分支名称,点击settings:
设置好后重新去写相关的信息,应该以后新的项目就不要再次设置了吧(未尝试,主分支名这事件有兴趣可以去搜索下Master 分支、种族歧视这样的字眼):
现在可以创建了。我以后会基于Codeigniter和vue(本文不包括进来),忽略文件模板就选择Codeigniter的好了。
现在这个项目部分就准备好了。
https://github.com/virhuiai/teaching_gf_web_develop.git
Docker Hub上新建Repository
https://hub.docker.com/repositories
名字也叫teaching_gf_web_develop.git吧
可以看到,这边能看到我们在GitHub上的新建的这个项目了(需要链接过你的 Github),选中。
下边有BUILD RULES:
我们可以再点下面的例子看看:
最终,我写的是:
/^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,
我们给它打上tag:
提交时勾上Tag,刚刚已经提交了忘记截图,所以这会没显示什么内容:
第一次时会要输入GitHub的密码:
Docker的自动构建:
这会到DockerHub上,
就可以看到在构建了:
这需要一会,再去看,就能看到成功了:
这时我们就能在本地拉取了:
启动容器:
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
此时打开本地浏览器就能看到效果: