美文网首页
GoCD 整行记(二):定制 gocd-agent

GoCD 整行记(二):定制 gocd-agent

作者: 小麻烦它爹 | 来源:发表于2021-03-30 23:16 被阅读0次

直接上结果

GitHub 项目地址

基于官方提供的 gocd-agent 镜像集成以下环境

  1. JDK8: 用于编译 Java 程序
  2. docker: 用于打包 docker 镜像
  3. expect: 用于远程部署
docker pull hezhong0711/gocd-agent-jdk8

步骤

agent.dockerfile

FROM gocd/gocd-agent-alpine-3.12:v21.1.0
MAINTAINER HeZhong "hezhong0711@gmail.com"
# 切换到 root 用户
USER root
# 安装 expect、jdk、docker
RUN apk update && apk add expect && apk add openjdk8 && apk add docker && apk add openrc
# 将 entrypoint.sh 复制到容器中
COPY entrypoint.sh .
# 给脚本添加执行权限
RUN chmod +x entrypoint.sh
# 容器启动时执行脚本
ENTRYPOINT ["/entrypoint.sh"]
# 切换到 go 用户
USER go

exntrypoint.sh

#!/bin/bash

# 将 docker.sock 授权给 go 用户,否则 docker 命令无法正常工作
chown go /var/run/docker.sock
# 启动 gocd-agent 程序
bash /docker-entrypoint.sh

构建 docker 镜像

docker build -f agent.dockerfile -t hezhong0711/gocd-agent-jdk8 .

启动容器

docker run -d \
  -e GO_SERVER_URL=http://$(docker inspect --format='{{(index (index .NetworkSettings.IPAddress))}}' GOCD_SERVER_NAMES):8153/go \
  -v '/var/run/docker.sock:/var/run/docker.sock:rw' hezhong0711/gocd-agent-jdk8:latest

说明

docker 命令集成的坑

  • 要在 docker 容器中集成 docker 命令,需要将宿主机的 /var/run/docker.sock 文件挂载到 docker 中,参考 启动容器 命令中的 -v '/var/run/docker.sock:/var/run/docker.sock:rw' 参数
  • 由于 gocd-agent 启动后用户会切换到 go 用户,所以需要修改 /var/run/docker.sock 的权限给 go 用户,参考 exntrypoint.sh 脚本中的 chown go /var/run/docker.sock 命令

相关文章

网友评论

      本文标题:GoCD 整行记(二):定制 gocd-agent

      本文链接:https://www.haomeiwen.com/subject/nimnhltx.html