构建 Docker 镜像并上传
339 字约 1 分钟
本文介绍如何在流水线中构建 Docker 镜像并推送至制品库。
上传到 CNB Docker 制品库
CNB 流水线内置触发者的访问凭据,可直接登录 CNB Docker 制品库并推送镜像。
配置文件示例:
.cnb.yml
main:
push:
- services:
- docker # 声明后,流水线内可直接使用 docker 命令
stages:
- name: set docker tag
script: echo -n "${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest"
exports:
info: IMAGE_TAG
- name: docker build
script: docker build -t $IMAGE_TAG .
- name: push image
script: docker push $IMAGE_TAG上传到第三方 Docker 制品库
如需推送至第三方 Docker 制品库,可将 Docker 凭证存储在密钥仓库中,再通过 imports 语法导入流水线。
配置文件示例:
.cnb.yml
main:
push:
- services:
- docker # 声明后,流水线内可直接使用 docker 命令
# 从密钥仓库导入 Docker 凭证到环境变量
imports: https://cnb.cool/<your-repo-slug>/-/blob/main/xxx/docker-envs.yml
stages:
- name: set docker tag
script: echo -n "${DOCKER_REGISTRY}/${DOCKER_GROUP}$/${DOCKER_REPO_NAME}$:$CNB_COMMIT_SHORT"
exports:
info: IMAGE_TAG
- name: docker login
script: docker login -u ${DOCKER_USER} -p "${DOCKER_PWD}" ${DOCKER_REGISTRY}
- name: docker build
script: docker build -t $IMAGE_TAG .
- name: push image
script: docker push $IMAGE_TAGdocker-envs.yml 文件内容:
DOCKER_USER: user
DOCKER_PWD: password
DOCKER_REGISTRY: docker.io
DOCKER_GROUP: group_name
DOCKER_REPO_NAME: repo_name