docker安装定制gocd-agent

一、定制gocd-agent

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

很多人会想为什么要把openjdk8、maven、make等命令打包到docker容器里面,因为docker容器里面是不带这些命令的,但是我们在打包部署的时候需要用到这些命令。所以需要把这些命令一起打成镜像,一起部署。

上面打了两个镜像一个是openjdk8,一个是openjdk17的,但是在打openjdk17的时候会报如下的错。

首先在docker里面使用apk add openjdk17来安装,使用的是apk包管理器,在alpine:v3.12的版本里面是没有openjdk17的,如果你安装openjdk8是没有问题的,安装openjdk17所以才会报上面那个错误。那怎么办呢?

http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz

http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEx.tar.gz

这个时候需要换alpine的版本了,在agent.dockerfile文件里面添加

RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.16/main/" > /etc/apk/repositories && echo "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/" >> /etc/apk/repositories

然后再每个apk的后面加上--allow-untrusted。

最终的脚本就是这样的。

FROM gocd/gocd-agent-alpine-3.12:v21.1.0
MAINTAINER xxx "xxx@163.com"
# 切换到 root 用户
USER root
RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.16/main/" > /etc/apk/repositories && echo "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/" >> /etc/apk/repositories
# 安装 expect、jdk、docker
RUN apk update --allow-untrusted && apk add expect --allow-untrusted && apk add openjdk17-jdk --allow-untrusted && apk add docker --allow-untrusted && apk add openrc --allow-untrusted && apk add maven --allow-untrusted && apk add make --allow-untrusted 
# 将 entrypoint.sh 复制到容器中
COPY entrypoint.sh .
# 给脚本添加执行权限
RUN chmod +x entrypoint.sh
# 容器启动时执行脚本
ENTRYPOINT ["/entrypoint.sh"]
# 切换到 go 用户
USER go

vi entrypoint.sh

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

构建新的gocd-agent

docker build -f agent.dockerfile -t gocd-agent-xxx .
docker pull xxx/gocd-agent-xxx

一、安装gocd-agent

docker run --name gocd-agent -d -e GO_SERVER_URL=http://ip:port/go xxx/gocd-agent-xxx:latest

二、安装完之后,可以启动gocd-server。

http://ip:port/

然后开始点击“Pipeline”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449675.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 热门百题斩(第二天)

介绍 针对leetcode的热门一百题,解决大多数实习生面试的基本算法题。通过我自己的思路和多种方法,供大家参考。 1.两数之和(题号:1) 方法一 最先想到的就是两个for去遍历匹配。 class Solution {public int[] twoSum(int[]…

基于3DGIS 的5G 基站规划

这个基于3DGIS 5G 基站规划的案例很不错,与大家分享一下。感觉是3DGIS中为数不多的实用案例。但还是没有特别多的突出三维的技术优势,因为这里面很多规划思想其实还是基于面的而不是基于体的!好了不多说了,给大家分享这个案例&…

跟着cherno手搓游戏引擎【18】抽象Shader、项目小修改

抽象&#xff1a; Shader.h: #pragma once #include <string>namespace YOTO {class Shader {public:virtual~Shader()default;virtual void Bind()const0;virtual void UnBind()const0;static Shader* Create(const std::string& vertexSrc, const std::string&am…

【秒剪】如何分享视频?

如何分享视频&#xff1f; 经秒剪制作的视频点击【保存】后&#xff0c;选择下方相应按钮即可【发布到朋友圈】、【发布到视频号】和【其他】&#xff0c;直接从秒剪发布到朋友圈支持最长 60s 发布&#xff0c;直接发布到视频号画质也会更清晰。

【BIAI】Lecture10 - Motor System2

Motor System2 专业术语 descending spinal tracts 下行脊髓束 corticospinal tract 锥体束 reticulospinal tract 脊髓脑干束 vestibulospinal tract 脊髓脑干侧脊束 precentral gyrus 前中央回 population coding 群体编码 basal ganglia 基底节 thalamus 丘脑 Posterior pa…

Axure 动态面板初使用-实现简单的tab切换页面效果

使用工具版本 Axure 9 实现的效果 步骤过程 1、打开Axure 9&#xff0c;默认进入一个空白页&#xff0c;首先从元件库拉一个动态面板到页面中&#xff0c;位置肯定是C位咯~ 2、将面板尺寸调整一下&#xff0c;设置成你喜欢的数字&#xff0c;比如我就喜欢800600 3、然后…

网络原理TCP/IP(2)

文章目录 TCP协议确认应答超时重传连接管理断开连接 TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol").⼈如其名,要对数据的传输进⾏⼀个详细 的控制; TCP协议段格式 • 源/目的端口号:表⽰数据是从哪个进程来,到哪个进程去; • 32位序号/32位确认…

程序员的悲哀:知名Python库requests作者失业了

在当今这个快速发展的科技时代&#xff0c;程序员作为创新的驱动力&#xff0c;一直被视为时代的宠儿。然而&#xff0c;即使在这样一个充满机会的领域&#xff0c;也有着不为人知的辛酸。近日&#xff0c;一个令人震惊的消息传遍了编程社区&#xff1a;知名Python库requests的…

2024牛客寒假算法基础集训营1

文章目录 A DFS搜索M牛客老粉才知道的秘密G why外卖E 本题又主要考察了贪心B 关鸡C 按闹分配 今天的牛客&#xff0c;说是都是基础题&#xff0c;头昏昏的&#xff0c;感觉真不会写&#xff0c;只能赛后补题了 A DFS搜索 写的时候刚开始以为还是比较难的&#xff0c;和dfs有关…

重写Sylar基于协程的服务器(4、协程调度模块的设计)

重写Sylar基于协程的服务器&#xff08;4、协程调度模块的设计&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务器&#xff08;1、日…

JProfiler for Mac:提升性能和诊断问题的终极工具

在当今的高性能计算和多线程应用中&#xff0c;性能优化和问题诊断是至关重要的。JProfiler for Mac 是一个强大的性能分析工具&#xff0c;旨在帮助开发者更好地理解其应用程序的运行情况&#xff0c;提升性能并快速诊断问题。 JProfiler for Mac 的主要特点包括&#xff1a;…

移远(Quectel)物联网通信解决方案

一、方案简介 无线通信模块是具备无线通信的电路模块&#xff0c;它能通过无线连接传输数据&#xff0c;能识别分析主控制器发来的命令&#xff0c;控制节点设备的工作&#xff0c;或者向主控制器发送当前节点设备的工作状态。 市面上常用的无线通信模组包括蓝牙模组、WLAN模…