1、要使用docker slave进行java项目编译发布,如果采用doud的方式,首先需要在宿主机上暗转docker。
具体步骤参考:
https://www.jianshu.com/p/2f9bda64ec32
2、安装完docker之后,如果采用maven编译的,需要在宿主机上安装局域网maven本地仓库。
具体步骤参考:
https://www.jianshu.com/p/4f482bfe934b
3、需要在宿主机上安装jdk。
4、下载装有maven、git、java的jenkins slave镜像
docker pull cloudbees/jnlp-slave-with-java-build-tools:latest
5、创建Dockerfile,更改cloudbees/jnlp-slave-with-java-build-tools:latest镜像时区
cp /usr/share/zoneinfo/Asia/Shanghai .
FROM cloudbees/jnlp-slave-with-java-build-tools
USER root
ADD Shanghai /usr/share/zoneinfo/Asia/
RUN rm -rf /etc/localtime
RUN ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
docker build -t 192.168.1.74/public/jnlp-slave-with-java-build-tools .
6、启动jenkins slave
docker run --name test6 --user root -v /root/.m2:/root/.m2 -v /home/services:/home/services -v /run/docker.sock:/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 cloudbees/jnlp-slave-with-java-build-tools:latest -url http://192.168.1.75:8800/jenkins 2e9e6753971dc6571ccd8f925141915419bd5226380c0ae5326bb11704168e99 test6
docker run --name test6(test6指定容器的名字) --user root(需要使用root用户来执行,或者指定jenkins用户加入到root组,不然容器编译发布会有权限问题,报错) -v /root/.m2:/root/.m2(把本地仓库配置映射进容器里) -v /home/services:/home/services(把jenkins指定的主目录映射进容器里) -v /run/docker.sock:/run/docker.sock -v /usr/bin/docker:/usr/bin/docker(映射宿主机的docker进容器,这样在容器里面可以进行docker操作,或者管理宿主机的容器) -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7(找到宿主机libltdl.so.7文件映射进容器里) 192.168.1.74/public/jnlp-slave-with-java-build-tools:latest -url http://192.168.1.75:8800/jenkins(jenkins master的地址)2e9e6753971dc6571ccd8f925141915419bd5226380c0ae5326bb11704168e99(jenkins jnlp链接的秘钥) test6(在master上slave的名字)
7、docker exec -it test6 /bin/bash
进入容器进行查看