优秀的编程知识分享平台

网站首页 > 技术文章 正文

GitHub+Docker Hub实现自动构建镜像

nanyue 2024-09-29 14:54:45 技术文章 5 ℃

自动构建镜像可以:

  • 方便查看 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-apache
    WORKDIR /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

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


    Tags:

    最近发表
    标签列表