Docker 插件
Docker插件可用于构建镜像并将其发布到Docker注册表。以下流水线配置使用Docker插件来构建和发布Docker镜像:
pipeline:
docker:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: foo/bar
tags: latest
使用多个标签的配置示例:
pipeline:
docker:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: foo/bar
tags:
- latest
- '1.0.1'
- '1.0'
使用`.tags'文件(逗号分隔的标记列表)的配置示例:
pipeline:
build:
image: golang
commands:
- go build
- go test
- echo -n "5.2.6,5.2.4" > .tags
docker:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: foo/bar
使用构建参数的示例配置:
pipeline:
docker:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: foo/bar
build_args:
- HTTP_PROXY=http://yourproxy.com
将机密作为构建参数传递的配置示例:
pipeline:
build-image:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: foo/bar
build_args_from_env:
- TOKEN
secrets:
- source: env_token
target: token
使用备用Dockerfile的配置示例:
pipeline:
docker:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: foo/bar
dockerfile: path/to/Dockerfile
使用自定义注册表的配置示例:
pipeline:
docker:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: index.company.com/foo/bar
registry: index.company.com
使用内联凭据的配置示例:
pipeline:
docker:
image: plugins/docker
settings:
username: kevinbacon
password: pa55word
repo: foo/bar
使用机密凭据的配置示例:
pipeline:
docker:
image: plugins/docker
settings:
repo: foo/bar
username:
from_secret: docker_username
password:
from_secret: docker_password
自动标记
Docker插件可以配置为自动标记您的镜像。当启用此功能并且事件类型为标记时,插件将使用标准的主要、次要发布约定自动标记镜像。例如:
1.0.0
生成docker标记1
、1.0
、1.0.0
1.0.0-rc.1
生成docker标记1.0.0-rc.1
当事件类型为推送并且目标分支为默认分支(例如master)时,插件会自动将镜像标记为“最新”。忽略所有其他事件类型和分支。
配置示例:
pipeline:
docker:
image: plugins/docker
settings:
repo: foo/bar
auto_tag: true
username: kevinbacon
password: pa55word
带有标记后缀的配置示例:
pipeline:
docker:
image: plugins/docker
settings:
repo: foo/bar
auto_tag: true
auto_tag_suffix: linux-amd64
username: kevinbacon
password: pa55word
请注意,自动标记是故意简单和固执己见。我们现在不接受拉取请求,以进一步自定义逻辑。
多阶段构建
Docker插件允许在“Dockerfile”中定义的特定阶段停止构建,如官方文档中所述。 如果没有定义“target”属性,Docker插件将不会在任何阶段停止并构建完整的Docker镜像。
使用类似“Dockerfile”的文件:
FROM golang as builder
WORKSPACE /go/src/github.com/foo/bar
RUN CGO_ENABLED=0 GOOS=linux go build -o demo main.go
FROM scratch as production
COPY --from=builder /go/src/github.com/foo/bar/demo .
CMD ["./demo"]
FROM alpine as debug
COPY --from=builder /go/src/github.com/foo/bar/demo .
CMD ["./demo"]
允许为生产构建docker镜像的示例配置:
pipeline:
docker:
image: plugins/docker
settings:
repo: foo/bar
target: production
username: kevinbacon
password: pa55word
这个将构建调试docker镜像
pipeline:
docker:
image: plugins/docker
settings:
repo: foo/bar
target: debug
username: kevinbacon
password: pa55word
参数介绍
registry : 对此注册表进行身份验证
username : 使用此用户名进行身份验证
password : 使用此密码进行身份验证
repo : 镜像的存储库名称
tags : 镜像的存储库标记
dockerfile : 要使用的dockerfile的路径,默认为dockerfile
dry_run : 布尔值 如果为true在末尾推送docker镜像
purge : 布尔值 如果为true在最后清理docker镜像
context : 要使用的上下文路径,默认为git repo的根目录
target : 要使用的构建目标,必须在docker文件中定义
force_tag=false : 替换现有匹配的镜像标记
insecure=false : 启用与该注册表的不安全通信
mirror : 使用一个镜像注册表,而不是直接从central Hub中提取镜像
bip=false : 用于传递桥接IP
custom_dns : 为容器设置自定义dns服务器
custom_dns_search : docker守护进程dns搜索域
storage_driver : 支持“aufs”、“overlay”或“vfs”驱动程序
storage_path : docker守护程序存储路径
build_args : 向docker build传递自定义参数
build_args_from_env : 将envvars作为自定义参数传递给docker build
auto_tag=false : 基于git分支和git标记自动生成标记名
auto_tag_suffix : 用这个后缀生成标签名
debug, launch_debug : 在详细调试模式下启动docker守护程序
mtu : docker守护进程的自定义mtu设置
ipv6 : docker守护进程的IPv6网络
experimental : docker守护进程的实验模式
daemon_off : 不启动docker守护进程
cache_from : 要视为缓存源的镜像
squash : 在构建时压扁各层
pull_image : 在构建时强制拉动基本镜像
compress : 使用gzip压缩构建环境
custom_labels : 附加k=v标签
label_schema : 标签模式的标签
email : docker电子邮件
no_cache : 不使用缓存的中间容器
add_host : 附加主机:IP映射