docker制作包含maven的jenkins镜像,并运行git项目

1.宿主机创建jenkinstest目录把maven包拷贝到宿主机上

注意这里的maven里面是maven文件夹,为之后拷贝到容器中用 copy功能只会把当前目录下的文件复制过去 当前目录不会一起复制

编辑Dockerfile文件

from jenkins/jenkins
COPY  maven /opt/
COPY settings.xml /opt/apache-maven-3.5.2/conf/
ENV PATH /opt/apache-maven-3.5.2/bin:$PATH

这里注意COPY的参数设置写法

修改settings的仓库配置内容 并一起放到jenkinstest目录下,

这里的仓库地址配置和jenkins挂载地址一致,这样可以少配置一个挂载目录,也可以改成其他位置,在启动容器时映射这个目录

<localRepository>/var/jenkins_home/repository</localRepository>

确保maven,setting.xml 、Dockerfile三个文件或者文件夹在同一个目录下后执行

docker build -t jenkins-maven:chijs .

运行容器

8081端口是应用的端口也要映射

docker run  -d -p 10240:8080 -p 10241:50000 -p 8081:8081  -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime  --name chijsjenkins jenkins-maven:chijs

 注意jenkins目录权限问题 看这个文章

Docker 快速安装Jenkins完美教程 (亲测采坑后详细步骤) - 爱码网

基于docker运行的jenkins并配置maven - it610.comp

jenkins中配置 

 

进入容器发现有权限问题 

这边点到console output 看到日志也报错了

查了下跟权限的用户组有关

 

jenkins的权限用户id是1000  而 宿主机的权限用户id是0

因为是复制到容器的方式 所以会把权限id一起带过去 需要修改下文件的权限
 

用root用户登录jenkins

 docker exec -u root -it 3b4e2465b61d /bin/bash

进入容器的maven bin目录 执行

chmod +x mvn

 

发现jenkins启动后还是报错

-x 打debug信息出来查看

跟项目的一个properties文件有关

 

 

发现这个文件是GBK编码

系统部署是用utf-8格式解析文件

所以中文就会报错

 解决方法 1 直接把配置文件改成utf-8格式

2.把中文转换下

用jdk下的工具

到这里只是构建完成 

构建命令改成

-e -N -DskipTests -Dmaven.test.skip=true clean package

 到这里只是构建项目 还得运行项目 要用到shell命令


DEOMO_PATH=/var/jenkins_home/workspace/test/target/demo-0.0.1-SNAPSHOT

chmod 755 $DEOMO_PATH.jar

nohup  java  -jar $DEOMO_PATH.jar &    

&符号是后台执行 

 

执行脚本参考文章

基于Docker+Jenkins实现自动化部署 - 明天,你好啊 - 博客园

发现还有报错

 解决办法

jekins的全局配置中加入环境变量

 BUILD_ID     dontKillMe

参考文章jenkins Process leaked file descriptors_yueguanyun的专栏-CSDN博客

配置完可能需要重启jenkins  执行 jenkins地址/restart

最后构建成功

运行项目  这里8081端口是宿主机端口  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 安装DockerDocker Compose 在安装DockerDocker Compose之前,需要先安装Docker的依赖包。 首先,更新apt-get: ``` sudo apt-get update ``` 然后安装Docker的依赖包: ``` sudo apt-get install apt-transport-https ca-certificates curl software-properties-common ``` 接下来,添加Docker的GPG密钥: ``` curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - ``` 添加Docker的APT仓库: ``` sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ``` 更新apt-get: ``` sudo apt-get update ``` 安装Docker: ``` sudo apt-get install docker-ce ``` 安装Docker Compose: ``` sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 添加执行权限: ``` sudo chmod +x /usr/local/bin/docker-compose ``` 2. 编写Docker Compose文件 在本地创建一个文件夹,用于存放Docker Compose文件和Jenkins的数据: ``` mkdir jenkins cd jenkins mkdir jenkins-data ``` 然后,在该文件夹下创建一个docker-compose.yml文件,用于定义Jenkins容器和相关配置: ``` version: '3' services: jenkins: container_name: jenkins image: jenkins/jenkins:lts ports: - "8080:8080" - "50000:50000" volumes: - "./jenkins-data:/var/jenkins_home" networks: - jenkins_network networks: jenkins_network: ``` 此配置文件会创建一个名为“jenkins”的容器,使用jenkins/jenkins:lts镜像,映射8080和50000端口,并将/var/jenkins_home目录映射到本地的./jenkins-data目录。 3. 启动Jenkins容器 启动Jenkins容器: ``` docker-compose up -d ``` 访问http://localhost:8080,输入初始管理员密码,完成Jenkins的安装。 4. 配置Jenkins 登录Jenkins后台,安装Git插件和Maven插件。 在Jenkins后台,选择“新建任务”,配置任务信息,选择“自由风格项目”。 在“源码管理”中选择“Git”,填写Git仓库地址和用户凭证,保存并应用配置。 在“构建触发器”中选择“轮询SCM”,填写轮询时间间隔。 在“构建”中选择“执行shell命令”,填写构建命令,如: ``` mvn clean package ``` 在“构建后操作”中选择“部署war/ear到容器”,填写部署配置信息,如: ``` Container: Tomcat 8.x Remote Tomcat URL: http://localhost:8080 Credentials: Jenkins WAR/EAR files: **/*.war Context path: / ``` 保存并应用配置。 5. 获取远程代码并构建 在Jenkins任务列表中,选择要构建的任务,点击“立即构建”按钮,Jenkins会自动获取远程Git仓库中的代码,并执行构建命令。 构建完成后,Jenkins会自动将构建好的war包部署到Tomcat容器中,访问http://localhost:8080即可查看部署的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小池先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值