onestic/docker-ci镜像旨在跨项目实现一致的代码检查、构建和推送Docker镜像(及其README文件)。
该镜像针对Bitbucket Pipelines无缝集成进行了优化,确保可靠且标准化的Docker镜像管理流程。
此镜像构建适用于linux/amd64和linux/arm64平台。
唯一支持的镜像标签基于其依赖的Docker主版本:25-cli。该标签每日更新,可能会添加新功能(始终保持向后兼容,必要时通过功能标志激活)。
注意:可能存在其他开发相关标签,使用时需自行承担风险。
当使用参数启动时,基于此镜像的容器将表现为常规docker:25-cli容器。虽然可以这样运行,但与基础镜像相比无额外优势。
该镜像的预期使用方式是不带参数,通过环境变量配置(管道模式)。在此模式下,将尝试执行以下操作:
在Bitbucket管道中作为管道使用的示例(移除不需要的注释行):
yamlpipelines: default: - step: name: '代码检查、构建与推送' script: - pipe: 'docker://onestic/docker-ci:25-cli' variables: # 取消注释以下行可跳过管道操作 # DOCKER_CI_LINT_SKIP: '1' # DOCKER_CI_LOGIN_SKIP: '1' # DOCKER_CI_BUILD_SKIP: '1' # DOCKER_CI_PUSHRM_SKIP: '1' # 取消注释并调整以下行以指定非默认工作目录(通常不需要) # DOCKER_CI_WORKDIR: ${BITBUCKET_CLONE_DIR} # 取消注释并调整以下行以指定自定义Dockerfile路径(仅当Dockerfile不在仓库根目录时需要) # DOCKER_CI_DOCKERFILE: ${BITBUCKET_CLONE_DIR}/Dockerfile # 取消注释以下行以增加shell详细程度(-x) # DOCKER_CI_DEBUG: '1' # 取消注释并调整以下行以登录到非Docker Hub的仓库 # DOCKER_CI_LOGIN_REGISTRY: docker.io # 在Bitbucket系统中以安全变量形式声明并设置登录值 DOCKER_CI_LOGIN_REGISTRY_USER: ${DOCKER_CI_LOGIN_REGISTRY_USER} DOCKER_CI_LOGIN_REGISTRY_PASSWORD: ${DOCKER_CI_LOGIN_REGISTRY_PASSWORD} # 取消注释并调整以下行以将镜像标记/推送到非Docker Hub的仓库 # DOCKER_CI_BUILD_IMAGE_REGISTRY: docker.io # 取消注释并调整以下行以指定非onestic的仓库用户 # DOCKER_CI_BUILD_IMAGE_USER: 'onestic' # 取消注释并调整以下行以指定非仓库slug的仓库名称 # DOCKER_CI_BUILD_IMAGE_REPOSITORY: ${BITBUCKET_REPO_SLUG} # 取消注释并调整以下行以指定非默认的构建平台 # DOCKER_CI_BUILD_PLATFORM_EMULATORS: 'linux/amd64,linux/arm64' # 如果构建上下文为仓库根目录而非上下文文件夹,取消注释以下行 # DOCKER_CI_BUILD_CONTEXT: ${BITBUCKET_CLONE_DIR} # 取消注释以下行以指定Dockerfile构建参数(如有需要) # DOCKER_CI_BUILD_ARGS: '' # 取消注释并调整以下行以微调`docker buildx build`命令参数 # DOCKER_CI_BUILD_COMMAND_ARGS: '--push' # 使用以下行指定额外的镜像标签(在目标仓库、用户和仓库内) # DOCKER_CI_BUILD_TAGS: '' # 以下行用于自动标记 # 可覆盖或故意设为空以跳过某些类型的自动标签 # DOCKER_CI_BUILD_NUMBER: '' # DOCKER_CI_BUILD_TAG: '' # DOCKER_CI_BUILD_PR_ID: '' # DOCKER_CI_BUILD_BRANCH: ''
可在一次性模式下运行此镜像(例如用于代码检查),需正确定义操作变量、挂载卷并指定工作目录。
例如,进入包含Dockerfile的项目目录后,可通过以下方式检查Dockerfile:
shelldocker run --rm -it \ -e DOCKER_CI_LOGIN_SKIP=1 \ -e DOCKER_CI_BUILD_SKIP=1 \ -e DOCKER_CI_PUSHRM_SKIP=1 \ -w /opt/project \ -v "$(pwd):/opt/project" \ -- \ onestic/docker-ci:25-cli
上述命令将:
按照上述示例,可手动/本地以一次性模式执行任意组合的管道操作。
每个管道操作可通过将其对应的skip环境变量设为1来跳过:
| 变量 | 简短描述 | 是否必填 | 默认值 |
|---|---|---|---|
| DOCKER_CI_LINT_SKIP | 跳过Docker代码检查操作 设为 1以跳过 | 否 | 0 |
| DOCKER_CI_LOGIN_SKIP | 跳过Docker仓库登录操作 设为 1以跳过 | 否 | 0 |
| DOCKER_CI_BUILD_SKIP | 跳过Docker构建/推送操作 设为 1以跳过 | 否 | 0 |
| DOCKER_CI_PUSHRM_SKIP | 跳过向容器仓库推送README-containers.md / README.md文件 设为 1以跳过 | 否 | 0 |
| 变量 | 简短描述 | 是否必填 | 默认值 |
|---|---|---|---|
| DOCKER_CI_WORKDIR | 工作目录 | 否 | ${BITBUCKET_CLONE_DIR:-$(pwd)} |
| DOCKER_CI_DOCKERFILE | Dockerfile路径(绝对路径或相对于工作目录的路径) | 否 | ${DOCKER_CI_WORKDIR}/Dockerfile |
| DOCKER_CI_DEBUG | 是否激活shell详细模式(-x) 设为 1以激活 | 否 | 0 |
注意:当操作未被跳过时,必填变量才为必填。
| 继承的变量 | 简短描述 |
|---|---|
| DOCKER_CI_DOCKERFILE | 用于查找待检查的Dockerfile 参见通用变量 |
注意:当操作未被跳过时,必填变量才为必填。
| 变量 | 简短描述 | 是否必填 | 默认值 |
|---|---|---|---|
| DOCKER_CI_LOGIN_REGISTRY | 登录的仓库 | 否 | docker.io |
| DOCKER_CI_LOGIN_REGISTRY_USER | 登录用户名 | 是 | |
| DOCKER_CI_LOGIN_REGISTRY_PASSWORD | 登录密码 | 是 |
注意:当操作未被跳过时,必填变量才为必填。
| 继承的变量 | 简短描述 |
|---|---|
| DOCKER_CI_DOCKERFILE | 用于查找构建用的Dockerfile 参见通用变量 |
下表为操作特定变量:
| 变量 | 简短描述 | 是否必填 | 默认值 |
|---|---|---|---|
| DOCKER_CI_BUILD_IMAGE_REGISTRY | 推送镜像的仓库 例如,在 docker.io/nginx/hello-world:1.19中对应docker.io部分 | 否 | docker.io |
| DOCKER_CI_BUILD_IMAGE_USER | 目标仓库的所有者用户 例如,在 docker.io/nginx/hello-world:1.19中对应nginx部分 | 否 | onestic |
| DOCKER_CI_BUILD_IMAGE_REPOSITORY | 推送镜像的仓库名称 例如,在 docker.io/nginx/hello-world:1.19中对应hello-world部分 | 仅当推送仓库且非Bitbucket CI时 | 在Bitbucket CI中,默认值为${BITBUCKET_REPO_SLUG} |
| DOCKER_CI_BUILD_PLATFORM_EMULATORS | 指定镜像构建的平台 | 否 | linux/amd64,linux/arm64 |
| DOCKER_CI_BUILD_CONTEXT | 用于构建镜像的构建上下文 | 否 | ${DOCKER_CI_WORKDIR}/context |
| DOCKER_CI_BUILD_ARGS | Dockerfile中声明的构建参数 例如,设为 PHP_VERSION=8.1 COMPOSER_VERSION=2将转换为--build-arg 'PHP_VERSION=8.1' --build-arg 'COMPOSER_VERSION=2' | 仅当Dockerfile需要构建参数时 | |
| DOCKER_CI_BUILD_COMMAND_ARGS | 允许修改传递给docker buildx build的选项列表注意:默认值为 --push,自定义此变量时如需保留推送行为,请确保添加--push | 否 | --push |
| DOCKER_CI_BUILD_TAGS | 除自动标签外,用于添加额外的空格分隔镜像标签 | 否 | |
| DOCKER_CI_BUILD_NUMBER | 可选,用于计算自动标签 若定义且非空,镜像将添加标签 build-${DOCKER_CI_BUILD_NUMBER} | 否 | 在Bitbucket CI中,默认值为${BITBUCKET_BUILD_NUMBER},所有管道中可用 |
| DOCKER_CI_BUILD_TAG | 可选,用于计算自动标签 若定义且非空,镜像将添加标签 ${DOCKER_CI_BUILD_TAG} | 否 | 在Bitbucket CI中,默认值为${BITBUCKET_TAG},仅在针对仓库标签的构建中可用 |
| DOCKER_CI_BUILD_PR_ID | 可选,用于计算自动标签 若定义且非空,镜像将添加标签 pr-${DOCKER_CI_BUILD_TAG} | 否 | 在Bitbucket CI中,默认值为${BITBUCKET_PR_ID},仅在针对PR的构建中可用 |
| DOCKER_CI_BUILD_BRANCH | 可选,用于计算自动标签 若定义且非空: - 若分支名为 main或master,镜像添加标签latest- 若分支名类似版本号(符合语义化版本),镜像添加标签 ${DOCKER_CI_BUILD_BRANCH}.x-dev- 其他情况,镜像添加标签 dev-${DOCKER_CI_BUILD_BRANCH} | 否 | 在Bitbucket CI中,默认值为${BITBUCKET_BRANCH},仅在针对分支的构建中可用 |
注意:当操作未被跳过时,必填变量才为必填。
另请注意:向Docker Hub推送超过25k字符的README文件可能失败。
| 继承的变量 | 简短描述 |
|---|---|
| DOCKER_CI_DOCKERFILE | 用于查找构建用的Dockerfile 参见通用变量 |
下表为操作特定变量:
| 变量 | 简短描述 | 是否必填 | 默认值 |
|---|---|---|---|
| DOCKER_CI_BUILD_IMAGE_REGISTRY | 推送README-containers.md / README.md内容的仓库 | 否 | docker.io |
| DOCKER_CI_BUILD_IMAGE_USER | 推送README-containers.md / README.md的仓库所有者用户 | 否 | onestic |
| DOCKER_CI_BUILD_IMAGE_REPOSITORY | 推送README-containers.md / README.md内容的仓库名称 | 仅当非Bitbucket CI时 | 在Bitbucket CI中,默认值为${BITBUCKET_REPO_SLUG} |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429