构建Docker镜像并上传

本文将介绍如何在流水线中构建Docker镜像,并推送到Docker制品库。

上传到CNB Docker制品库

CNB流水线中内置了流水线触发者的访问凭据,可以直接用于登录并上传CNB Docker制品库。

配置文件示例:

 1main:
 2  push:
 3    - services:
 4        - docker #声明后,流水线内可以直接使用docker命令
 5      stages:
 6        - name: set docker tag
 7          script: echo -n "${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest"
 8          exports:
 9            info: IMAGE_TAG
10
11        - name: docker build
12          script: docker build -t $IMAGE_TAG .
13
14        - name: push image
15          script: docker push $IMAGE_TAG

上传到官方或其他Docker制品库

对于上传到官方或其他Docker制品库,可以将DOCKER凭证存放到一个密钥仓库中,然后在流水中通过imports语法导入。

配置文件示例:

 1main:
 2  push:
 3    - services:
 4        - docker #声明后,流水线内可以直接使用docker命令
 5      # 从一个密钥仓库里,导入DOCKER凭证到环境变量
 6      imports: https://cnb.cool/<your-repo-slug>/-/blob/main/xxx/docker-envs.yml
 7      stages:
 8        - name: set docker tag
 9          script: echo -n "${DOCKER_REGISTRY}/${DOCKER_GROUP}$/${DOCKER_REPO_NAME}$:$CNB_COMMIT_SHORT"
10          exports:
11            info: IMAGE_TAG
12
13        - name: docker login
14          script: docker login -u ${DOCKER_USER} -p "${DOCKER_PWD}" ${DOCKER_REGISTRY}
15
16        - name: docker build
17          script: docker build -t $IMAGE_TAG .
18
19        - name: push image
20          script: docker push $IMAGE_TAG

docker-envs.yml

1DOCKER_USER: user
2DOCKER_PWD: password
3DOCKER_REGISTRY: docker.io
4DOCKER_GROUP: group_name
5DOCKER_REPO_NAME: repo_name