docker 构建Jenkins
sudo docker run --name=zen_haslett --user=jenkins --privileged=true --volume=/home/cyf/server/jenkins/jenkins_home:/var/jenkins_home -v /usr/lib/jvm/java-17-openjdk-amd64:/usr/lib/jvm/java-17-openjdk-amd64 -v /usr/lib/maven/apache-maven-3.8.8:/usr/lib/maven/apache-maven-3.8.8 -p 50000:50000 -p 49999:8080 -p 8087:8087 --restart=always -d jenkins/jenkins:2.362-jdk17
注意:需要把打包项目的端口 用-p映射出来,例如我项目是8087就 -p 8087:8087
jenkins 的jdk版本最好和要打包的项目一致,坑太多了
参考:又一本 Jenkins 书
常用的Docker命令
docker ps -a
用于列出所有容器(包括已停止的容器)不带-a 则只是运行中的
docker stop <container_id>
停止一个或多个正在运行的容器
docker rm <container_id>
删除一个或多个容器
docker pull
拉取映像
例如:安装一个redis
(base) beavers@beavers-home:/home/cyf/server$ docker pull redis
(base) beavers@beavers-home:/home/cyf/server$ sudo mkdir ./redis
(base) beavers@beavers-home:/home/cyf/server$ sudo mkdir ./redis/data
(base) beavers@beavers-home:/home/cyf/server$ sudo touch ./redis/redis.conf
docker run -p 6379:6379 --name redis --privileged=true --restart=always -v /home/cyf/server/redis/redis.conf:/etc/redis/redis.conf -v /home/cyf/server/redis/data:/data -d redis redis-server /etc/redis/redis.conf
# Redis配置文件
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize no
# 指定Redis监听端口,默认端口为6379
port 6379
# 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问
bind 0.0.0.0
#需要密码则打开
# requirepass mima
# 持久化
appendonly yes
docker exec
在正在运行的容器内执行命令,docker exec -it <container_id> /bin/bash
安装Maven插件
如果没有合适的版本,需要手动去Maven Integration 下找到合适的版本,下载后在Deploy Plugin 下上传
新建一个Maven项目
设置
添加JDK
可以不添加,Jenkins 自带
添加Maven
可以不添加,Jenkins 自带
设置源码地址
Credentials 为拉取代码时的凭证
Build
打包后运行
选择执行Shell
#!/bin/bash
echo "开始启动jar包"
export BUILD_ID=dontKillMe
#指定最后编译好的jar存放的位置 即是发布目录
www_path=${WORKSPACE}/javaProject
echo "日志目录 ${www_path}"
#Jenkins中编译好的jar名称
jar_name=ai-his-0.0.1-SNAPSHOT
app_jar=${jar_name}.jar
LOG_PATH=${www_path}/logs/${jar_name}.log
if [ ! -d "${www_path}" ]; then
mkdir ${www_path}
mkdir ${www_path}/logs
fi
#杀掉以前的进程
echo "Stopping tooldin-mq"
pid=`ps -ef | grep ${app_jar} | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "kill -9 的pid:" $pid
kill -9 $pid
fi
#打包后jar的路径,默认是target下
cp /var/jenkins_home/.m2/repository/com/beaver/ai-his/0.0.1-SNAPSHOT/ai-his-0.0.1-SNAPSHOT.jar ${www_path}
cd ${www_path}
echo "Execute shell Finish"
nohup java -Djasypt.encryptor.password=Qazwsx@123 -jar ${app_jar} > ${LOG_PATH} &
sleep 2
newPid=$(pgrep -f $app_jar)
echo "线程正常启动pid:$newPid"