目录
整体架构
环境准备
安装docker以及docker-compose
jenkins安裝
maven安装
portainer面板安装
sonarqube安装
在项目中增加dockerfile和compose.yml脚本
Dockerfile脚本内容
compose.yml脚本内容
jenkins安装必要插件
jenkins增加流水线任务
增加pipeline任务job
增加pipeline脚本
整体架构
环境准备
安装docker以及docker-compose
#官网https://docs.docker.com/engine/install/centos/
sudo yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
curl -SL https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
jenkins安裝
docker安装,启动命令:docker run --name jenkins \
--restart always \
-p 8080:8080 \
-p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home \
-d jenkins/jenkins:2.413
maven安装
portainer面板安装
docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 \
--name portainer-alpha \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /application/portainer/data:/data \
portainer/portainer-ce:2.18.4
sonarqube安装
docker安装,启动脚本:/usr/local/sonar/compose.yml
启动命令:docker-compose up -d
compose.yml文件内容如下:
services:
postgres:
image: postgres
container_name: pgdb
restart: always
ports:
- 5432:5432
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:9.9.1-community
container_name: sonarqube
restart: always
depends_on:
- postgres
ports:
- 9000:9000
environment:
SONAR_JDBC_URL: jdbc:postgresql://pgdb:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
在项目中增加dockerfile和compose.yml脚本
Dockerfile脚本内容
# jar镜像构建脚本
# 在jdk基础镜像上构架自定义jar包镜像
# 更改APP_NAME和ENTRYPOINT里面的jar名称,EXPOSE端口
# 基础镜像 指定jdk镜像名和及其版本
FROM openjdk:8u102
# 用标签写好开发者信息和系统描述信息
LABEL appdesc="xxx平台系统-系统服务" auth1="阿来小同学" email1="xxx@xxx.com"
#接收来自compose.yml文件中来的构建镜像参数
ARG ACTIVE
#dockerfile上下文用的环境变量,后面启动命令无法引用arg参数,所以需要环境环境变量来做中间转换
ENV APP_NAME=xxxxxxx APP_ACTIVE=$ACTIVE
#把宿主机的jar包复制到docker镜像的目录内
COPY ${APP_NAME}.jar /application/${APP_NAME}.jar
#指定docker内部的工作目录
WORKDIR /application
#描述下应用的端口
EXPOSE 12002
#数据卷挂载
VOLUME ["/application/logs"]
#执行命令以及参数 每一个字符串参数不要包含空格
ENTRYPOINT ["java","-XX:MetaspaceSize=256m","-XX:MaxMetaspaceSize=512m","-Xms256m","-Xmx256m","-Xmn128m","-Xss512k","-XX:SurvivorRatio=8","-XX:+UseConcMarkSweepGC","-jar","xxxxxxx.jar","--spring.profiles.active=${APP_ACTIVE}"]
compose.yml脚本内容
#jar镜像运行脚本
services:
testservice:
build:
context: ./
args:
- ACTIVE=${ACTIVE}
- TAG=${TAG}
image: 自定义镜像名:${TAG:-latest}
container_name: 自定义容器名
restart: always
volumes:
- /application/logs:/application/logs
ports:
- 12002:12002
jenkins安装必要插件
WXWork Notification Plugin
Git
Publish Over SSH
Pipeline
SonarQube Scanner for Jenkins
jenkins增加流水线任务
增加pipeline任务job
增加pipeline脚本
最后构建运行即可,看控制台实时日志排查问题