目录
1、github actions的介绍
2、dockerfile 的编写
2.1 dockerfile 范例
2.2 其他指令
3、workflow的编写
3.1 上传到docker hub
3.2 上传到 harbor
4、结果展示
1、github actions的介绍
参考文档: Github actions 的使用,以及workflows的编写,详细教程_忙碌且充实的博客-CSDN博客https://blog.csdn.net/cylcylccyyll/article/details/127968945
2、dockerfile 的编写
参考文档:https://blog.csdn.net/zx110503/article/details/10348051
2.1 dockerfile 范例
2.2 其他指令
1、COPY
复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
2、ADD
ADD 指令和 COPY 的使用格类似,功能也类似。
与COPY不同的是,ADD可以访问url路径,会访问网络进行下载,档到本地后打包到镜像。
此外,如果src是压缩包的话,会自动进行解压;但通过url获取的tar文件不会被展开。
3、ENTRYPOINT
类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
4、USER
用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。
5、VOLUME
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
避免重要的数据,因容器重启而丢失,这是非常致命的。
避免容器不断变大。
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
避免重要的数据,因容器重启而丢失,这是非常致命的。
避免容器不断变大。
6、ONBUILD
用于延迟构建命令的执行。
简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。
7、WORKDIR
指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。
docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
8、HEALTHCHECK
用于指定某个程序或者指令来监控 docker 容器服务的运行状态。
9、EXPOSE
仅仅只是声明端口。
帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口
10、LABEL
LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式.。
3、workflow的编写
3.1 上传到docker hub
name: images2 # workflow名称,可以在Github项目主页的【Actions】中看到所有的workflow
on: # 配置触发workflow的事件
#push:
#branches: # master分支有push时触发此workflow
#- 'master'
#tags: # tag更新时触发此workflow
#- '*'
workflow_dispatch: #手动触发
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
jobs: # workflow中的job
push_to_registry: # job的名字
name: Push Docker image to Docker Hub
runs-on: ebf-pod-ubuntu-2004 # job运行的基础环境
steps: # 一个job由一个或多个step组成
- name: Check out the repo
uses: actions/checkout@v2 # 官方的action,获取代码
- name: Log in to Docker Hub
uses: docker/login-action@v1 # 三方的action操作, 执行docker login
with:
username: ${{ secrets.DOCKERHUB_USERNAME }} # 配置dockerhub的认证,在Github项目主页 【Settings】 -> 【Secrets】 添加对应变量
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v2 # 抽取项目信息,主要是镜像的tag
with:
images: chen0928/difficulty
- name: Build and push Docker image
uses: docker/build-push-action@v3 # docker build & push
with:
context: . #指定dockerfile文件的位置
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
3.2 上传到 harbor
name: push-harbor
on:
#push:
workflow_dispatch:
jobs:
push-harbor:
runs-on: ebf-pod-ubuntu-2004
env:
TAG: sign:1.1
steps:
- uses: actions/checkout@v2
- name: harbor login
uses: azure/docker-login@v1
with:
login-server: aws.registry.trendmicro.com
username: ${{ secrets.HARBOR_ACCOUNT }}
password: ${{ secrets.HARBOR_TOKEN }}
# The image name should be xxxx/harbor/projects>:${{ env.TAG }} #可以在harbor内看到定义的push command
- name: build docker image
run: docker build . -t xxxx/testcc/${{ env.TAG }}
#- name: tag iamge
# run: docker tag sing:1.0 xxxx/testcc/sing${{ env.TAG }}
- name: push docker image to registry
#run: docker push xxxx/harbor/projects:${{ env.TAG }}
run: docker push xxxx/testcc/${{ env.TAG }}
4、结果展示
push完成之后可以在仓库中看见自己上传完成的镜像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)