注:jenkins也是采用的docker镜像运行的
1.安装jenkins
# 查找jenkins镜像
sudo docker search jenkins/jenkins
# 拉取jenkins镜像
sudo docker pull jenkins/jenkins
# 运行镜像
sudo docker run -d -p 10240:8080 -p 10241:50000 -v /home/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name my-jenkins jenkins/jenkins
我的服务器上是把jenkins的目录挂在到 /home/jenkins_mount目录下
访问 https://[服务器IP]:10240,等jenkins初始化好后,安装默认的插件
2.修改springboot项目配置
springboot项目根目录下新增三个文件:
(文件中所有的xxx都是项目名称,可以自己定义)
deploy.sh
#!/bin/bash
#项目占用端口
APP_PORT=8999
# 项目名字
APP_NAME=xxx
APP_HOME=/test/deploy/${APP_NAME}
APP_OUT=${APP_HOME}/logs
APP_TAG=2.0
mkdir -p ${APP_HOME}
mkdir -p ${APP_OUT}
echo "清理已有容器及镜像资源"
docker stop ${APP_NAME} && docker rm ${APP_NAME}
echo "清理已有容器及镜像资源成功!!!!"
echo "镜像制作"
docker build -t ${APP_NAME}:${APP_TAG} .
echo "镜像制作完成"
echo "开始运行"
docker run -d --name ${APP_NAME} -p 9005:7777 -v ${APP_OUT}:/usr/local/${APP_NAME}/logs ${APP_NAME}:${APP_TAG}
echo "已成功运行"
docker run -d --name ${APP_NAME} -p 9005:7777 -v
这行代码的意思是:将构建好的镜像的7777端口(具体看你的application.yml配置的端口)绑定到宿主机的9005端口,后期要配合单独nginx镜像对外提供服务,就可以为nginx镜像配置代理规则,比如http://abc.com/api 将 /api转发到9005端口
Dockerfile
FROM openjdk:8-jre
MAINTAINER Mroldx
ENV PROJECT_NAME xxx
ENV PROJECT_HOME /usr/local/${PROJECT_NAME}
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN mkdir $PROJECT_HOME && mkdir $PROJECT_HOME/logs
COPY xxx/target/*.jar /application.jar
ENTRYPOINT ["java", "-jar","/application.jar"]
Jenkinsfile
pipeline {
agent none
stages {
stage('Build') {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
steps {
sh 'mvn clean install -DskipTests=true'
}
}
stage('Deploy') {
agent any
steps {
sh 'sh deploy.sh'
}
}
}
}
Jenkinsfile文件不是必须的,因为我这边流水线配置的是
Pipeline script from SCM
需要从项目代码中获取pipeline执行脚本,需要配置git地址,账号密码等,简单来说,就是先把代码pull下来,再从代码里面找到Jenkinsfile执行文件里的pipeline script
如果选择
Pipeline script
则直接将脚本贴到下方的文本框里即可
配置完成后,选择保存,开始构建项目
构建完成后,在ssh中执行
sudo docker ps
看看镜像有没有在运行🌹