【解决方案】之jenkins+gitlab+docker
0 补充
- 磁盘空间不足的简单扩容根目录办法
# https://www.jianshu.com/p/0d5afb8cc3b5
fdisk /dev/sda 增加分区, 以此输入p、n、p、w, 重启
lvm
pvcreate /dev/sda3
vgextend centos /dev/sda3
lvextend -L +79.9G /dev/mapper/centos-root
pvdisplay
quit
xfs_growfs /dev/mapper/centos-root
一、docker 环境安装
docker-ce 需要内核3.10以上版本,否则安装不成功
- 克隆虚拟机模板, 设置IP为192.168.20.150 ![[虚拟机安装#一、克隆安装]]
- 设置阿里云的源,安装docker-ce
cd /etc/yum.repos.d/
rename .repo .repbak ./*
wget -O /etc/yum.repos.d/aliyun-centos7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/aliyun-centos-docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum makecache fast
yum update -y
yum repolist
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker-ce
systemctl stop firewalld
systemctl disable firewalld
systemctl enable docker
systemctl start docker
- 设置阿里云加速源,需登录阿里云容器镜像服务 (aliyun.com)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6yga1re5.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker --version
- 安装docker-compose
docker-compose参考了daocloud的加速器
DaoCloud/docker-mirror: docker hub mirror, Docker镜像加速器 (github.com)
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker 测试验证
- hello linbaba
docker pull nginx:stable
docker run -it --rm -d -p 8081:80 --name web -d nginx:stable
mkdir -p /usr/local/docker/nginx_docker/html
echo "<center>hello linbaba</center>" > /usr/local/docker/nginx_docker/html/index.html
docker run -it --rm --name web\
-v /usr/local/docker/nginx_docker/html:/usr/share/nginx/html \
-p 8081:80 \
-d nginx:stable
docker stop web
- Dockerfile
# prepare
docker pull nginx:stable
mkdir -p /usr/local/docker/nginx_docker/html
cd /usr/local/docker/nginx_docker/
echo "<center>hello linbaba</center>" > /usr/local/docker/nginx_docker/html/index.html
tee Dockerfile <<-'EOF'
FROM nginx:stable
MAINTAINER linzhihui <linzhihui@hotmail.com>
COPY ./html/index.html /usr/share/nginx/html
EOF
docker build -t mynginx:v1.0.1 .
docker tag mynginx:v1.0.1 mynginx:latest
docker run -it --rm --name web\
-p 8081:80 \
-d mynginx:latest
docker stop web
- compose
mkdir -p /usr/local/docker/nginx_docker/html
echo "<center>hello linbaba2</center>" > /usr/local/docker/nginx_docker/html/index.html
tee /usr/local/docker/nginx_docker/docker-compose.yml <<-'EOF'
version: "3.1"
services:
nginx:
image: nginx
volumes:
- ./html:/usr/share/nginx/html
ports:
- "8082:80"
environment:
- NGINX_HOST=foobar.com
- NGINX_PORT=80
container_name: nginx
EOF
cd /usr/local/docker/nginx_docker/
docker-compose up -d # -d后台启动
docker-compose down # 停止容器并移除
docker-compose stop # 停止
docker-compose start # 启动
docker-compose restart # 重启
- Dockerfile和compose组合使用
- path
~~~CONSOLE
[root@docker1 docker]# tree
.
├── nginx_docker
│ ├── build.sh
│ ├── Dockerfile
│ └── html
│ └── index.html
└── test1_compose
└── docker-compose.yml
~~~
- build.sh
~~~shell
#!/bin/bash
docker build -t mynginx:v1.0.2 .
docker tag mynginx:v1.0.2 mynginx:latest
~~~
- Dockerfile
~~~Dockerfile
FROM nginx:stable
MAINTAINER linzhihui <linzhihui@hotmail.com>
COPY ./html/index.html /usr/share/nginx/html
~~~
- docker-compose.yaml
~~~YAML
version: "3.1"
services:
nginx:
image: mynginx:latest
volumes:
- ./html:/usr/share/nginx/html
ports:
- "8080:80"
environment:
- NGINX_HOST=foobar.com
- NGINX_PORT=80
container_name: nginx
~~~
二、java设置
- pc/maven
pc/idea
从51job下载到了最新的IntelliJ IDEA 2021.2.2 旗舰版
- 破解通过添加plugin第三方仓库 http://plugins.zhile.io
- 添加插件 IDE Eval Reset
- 激活30天(每月循环操作,但可以勾选默认启动激活省去这个事):
- Click Help or Get Help -> Eval Reset menu.
- Click Reset -> Yes button.
- Restart your IDE.
补充:
修改idea代码提示快捷键为 Alt+/
修改idea代码提醒忽略大小写
添加yaml插件,方便application.yml文件编写
- 修正maven为alibaba源+本地仓加速
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<localRepository>d:\repository</localRepository>
<servers>
<server>
<id>deploymentRepo</id>
<username>admin</username>
<password>linzhihui</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>linzhihui</password>
</server>
</servers>
</settings>
更改主题为白色经典,方便查看
添加控制台高亮插件 Grep Console
springBoot 测试
- 新建spring initializr工程,选择jdk8, sping/web
- 添加application平级下的controller.TestController.java
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "hello springboot";
}
}
- 右上角bug启动,web访问
三、gitlab-container
mkdir -p /usr/local/docker/gitlab_docker
cd /usr/local/docker/gitlab_docker
tee docker-compose.yml <<-'EOF'
version: '3.1'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
container_name: gitlab
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.20.151:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '8929:8929'
- '2224:2224'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
EOF
docker-compose up -d
docker-compose logs -f
docker exec -it gitlab bash
# 登录页面修改默认密码
docker exec -it gitlab cat /etc/gitlab/initial_root_password
- 修改密码, root/password
java工程提交gitLab
- gitlab上创建项目,设为public,默认不创建readme
- idea控制台执行gitlab的声明账号信息
git config --global user.name "linzh"
git config --global user.email "linzhihui@hotmail.com"
idea对工程初始化git仓库
idea将项目提交本地仓库
idea将项目推到gitlab上
点击origin设置远端git地址
输入gitlab的账号密码
gitlab上检查代码正确提交上来了!
四、jenkins-container
4.1、jenkins安装配置
- 版本选择官网最新推荐的lts版本
docker pull jenkins/jenkins:2.319.1-lts
mkdir -p /usr/local/docker/jenkins_docker/data
cd /usr/local/docker/jenkins_docker
chmod -R 777 data
tee docker-compose.yml <<-'EOF'
version: '3.1'
services:
jenkins:
image: 'jenkins/jenkins:2.319.1-lts'
container_name: jenkins
ports:
- '8080:8080'
- '50000:50000'
volumes:
- './data:/var/jenkins_home'
EOF
docker-compose up -d
docker-compose logs -f
# 查看密码,登录页面安装插件
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 修改密码, admin/password
- 安装git parameter和publish over ssh,用于gitlab操作和远程ssh操作
容器安装jdk和maven客户端
- 宿主机下载app、解压、改名,拷贝到容器的挂载目录并授权
cd
wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
wget https://github.com/frekele/oracle-java/releases/download/8u212-b10/jdk-8u212-linux-x64.tar.gz
tar xvf apache-maven-3.8.5-bin.tar.gz
tar xvf jdk-8u212-linux-x64.tar.gz
mv apache-maven-3.8.5 maven
mv jdk1.8.0_212/ jdk
mv maven jdk /usr/local/docker/jenkins_docker/data/
chown -R 1000:1000 /usr/local/docker/jenkins_docker/data/maven
chown -R 1000:1000 /usr/local/docker/jenkins_docker/data/jdk
- 配置maven的阿里云镜像和jdk编译配置
vim /usr/local/docker/jenkins_docker/data/maven/conf/settings.xml
<!--search maven的阿里云镜像、maven jdk8 setting.xml -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<profile>
<id>jdk8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<activeProfiles>
<activeProfile>jdk8</activeProfile>
</activeProfiles>
- jenkins管理端、全局工具配置添加jdk和maven
- jenkins管理端、系统设置,添加宿主机,用于maven打包后推送封装镜像,后续可以考虑迁移到独立测试主机!
4.2、jenkins/CI过程
操作步骤
- jenkins 调通gitlab,尝试==某分支最新代码==拉取
- maven打包
- 将war/jar拷贝到远程机器
- 在远程机器进行构建
jenkins调通gitlab
- 新建item
添加任务名称,选择自由格式
添加git仓库
保存后查看控制台日志
根据日志路径查看代码生成
jenkins用顶层maven打包
修改任务配置,添加构建步骤
设置maven顶层配置执行清理、打包并跳过测试
检查workspace目录生成情况
jenkins拷贝jar到远程服务器
添加构建后操作
拷贝jar
jenkns远端执行镜像打包
- pom设置固定的jar名称,方便封装
<build>
<finalName>demo</finalName>
……
</build>
- 添加Dockerfile
FROM daocloud.io/library/java:8u40-jdk
COPY demo.jar /usr/local/
WORKDIR /usr/local/
CMD java -jar demo.jar
- 添加docker-compose.yaml
version: '3.1'
services:
demo:
build:
context: ./
dockerfile: Dockerfile
image: demo:v1.0.0
container_name: demo
ports:
- 8081:8080
- 配置jenkins构建后操作
cd /usr/local/test/docker
mv ../target/*jar ./
docker-compose down
docker-compose up -d --build
docker image prune -f
- 测试
查看jenkin构建日志ok、web访问也ok
4.3、jenkins/CD过程
操作步骤
- ==主干指定TAG版本代码==拉取
- maven打包
- 将war/jar拷贝到远程机器
- 在远程机器进行替换配置、构建、生成镜像
- 镜像提交到仓库
- k8s对最新镜像进行编排
jenkins 按tag做cd
jenkins复制原来ci任务,为cd
任务设置属性为依赖参数,并添加git参数
给git参数选择属性,设置别名,用于构建时的分支切换
构建阶段添加shell脚本,先进行版本切换
gitlab上对最新代码打上tag,用于后面的jenkins快速切换
jenkins 按tag做cd,并独立image
- compose支持.env文件设定参数,在jenkins构建完成后在目标服务器重写env文件达到同步!
- docker-compose.yaml
~~~yaml
version: '3.1'
services:
demo:
build:
context: ./
dockerfile: Dockerfile
image: demo:${demoTag}
container_name: demo
ports:
- 8081:8080
~~~
- .env
~~~CONSOLE
# 默认版本号,不过会被jenkins的手选tag最终替代
demoTag=v2.0.5
~~~
- jenkins/构建后操作脚本
~~~shell
cd /usr/local/test/docker
mv ../target/*jar ./
echo "demoTag=$demoProjectTag" > ".env"
docker-compose down
docker-compose up -d --build
docker image prune -f
~~~
五、sonarqube质检
5.1、sonar安装配置
# sonarqueb已移除mysql支持,对postgres用最新即可
docker pull postgres:latest
# 版本来源官网推荐的稳定社区版
docker pull sonarqube:8.9.8-community
mkdir -p /usr/local/docker/sonarqube_docker
cd /usr/local/docker/sonarqube_docker
tee docker-compose.yml <<-'EOF'
version: '3.1'
services:
db:
image: 'postgres:latest'
container_name: db
ports:
- '5432:5432'
networks:
- 'sonarnet'
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: 'sonarqube:8.9.8-community'
container_name: sonarqube
depends_on:
- 'db'
ports:
- '9000:9000'
networks:
- 'sonarnet'
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
networks:
sonarnet:
driver: bridge
EOF
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
sysctl -p
docker-compose up -d
docker-compose logs -f
# web登录9000口,默认账号密码都是admin,修改为 admin/password
# web/Administration/Marketplace 添加chinese,方便阅读代码建议
5.2、pc/idea质检测试
#idea用到的增加maven的setting.xml配置
<settings>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.login>admin</sonar.login>
<sonar.password>password</sonar.password>
<sonar.host.url>http://192.168.20.151:9000</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
# 在idea的terminal中执行 mvn sonar:sonar 即可进行质检,报告在sonarqube网站查看即可
5.3、linux/scanner-li质检测试
- gg 搜索sonar-scanner,进入github项目,从文档中找到linux-64的下载路径,github上只有源码
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip
yum install -y unzip
unzip sonar-scanner-cli-4.7.0.2747-linux.zip
mv sonar-scanner-4.7.0.2747-linux/ sonar-scanner
tee /root/sonar-scanner/conf/sonar-scanner.properties <<-'EOF'
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server
sonar.host.url=http://192.168.20.151:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
EOF
mv ~/sonar-scanner /usr/local/docker/jenkins_docker/data/
cd /usr/local/docker/jenkins_docker/data/workspace/demoProject-cd
/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner \
-Dsonar.sources=./ \
-Dsonar.projectname=demo \
-Dsonar.login=d601eb06a3aea547095ad9a1455033439062eef0 \
-Dsonar.projectKey=linux-scanner-test \
-Dsonar.java.binaries=./target/
5.4、jenkins集成质检
- jenkins 增加 sonarqube scanner 插件
- 系统设置,添加sonarqube服务器地址,首次添加无法录入密码,需保存后再次进入修改!
- 全局设置,添加sonar-scanner插件地址
- 任务设置,在构建环节最后面,添加scanner任务
sonar.sources=./
sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.java.binaries=./target
六、Habor仓库
docker的仓库是默认registry,vm家的habor功能更强大和主流
- gg搜索gohabor,从官网进入github下载离线tgz包
6.1、Habor安装配置
tar zxvf harbor-offline-installer-v2.5.0.tgz -C /usr/local/
/usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
# 修改hostname和端口,并注释掉https和证书
./install.sh
# web访问 admin/Harbor12345, 修改密码,添加项目repo公开仓库
6.2、linux/docker宿主机上传、下载测试
tee /etc/docker/daemon.json <<-'EOF'
{
"insecure-registries": ["192.168.20.151:80"]
}
EOF
systemctl restart docker
cd /usr/local/harbor
docker-compose up -d
docker tag demo:v1.0.0 192.168.20.151:80/repo/demo:v1.0.0
docker login -u admin -p Harbor12345 192.168.20.151:80
docker push 192.168.20.151:80/repo/demo:v1.0.0
# 删除本地,再从网络拉取
docker rmi 0ace52fd71b4 -f
docker pull 192.168.20.151:80/repo/demo:v1.0.0
6.3、整合jenkins-整合宿主机docker、打包上传镜像
cd /var/run/
chown root:root docker.sock
chmod o+rw docker.sock
# 修改compose文件,增加3个docker文件支持,方便使用宿主机进行docker镜像打包
cd /usr/local/docker/jenkins_docker
tee docker-compose.yml <<-'EOF'
version: '3.1'
services:
jenkins:
image: 'jenkins/jenkins:2.319.1-lts'
container_name: jenkins
ports:
- '8080:8080'
- '50000:50000'
volumes:
- './data:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/etc/docker/daemon.json:/etc/docker/daemon.json'
EOF
docker-compose up -d
docker exec -it jenkins bash
# 检查docker是否整合成功
docker version
# 可以去除构建后操作和compose文件,在构建成功后,添加以下shell
mv target/*.jar docker/
docker build -t mytest:$demoProjectTag docker/
docker login -u admin -p Harbor12345 192.168.20.151:80
docker tag mytest:$demoProjectTag 192.168.20.151:80/repo/mytest:$demoProjectTag
docker push 192.168.20.151:80/repo/mytest:$demoProjectTag
6.4、整合jenkins-通知、下载镜像
- 准备shell脚本,并手工测试
mkdir /usr/local/test
cd /usr/local/test
tee deploy.sh <<-'EOF'
#!/bin/bash
harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
host_port=$5
container_port=$6
imageName=$harbor_addr/$harbor_repo/$project:$version
echo $imageName
containerId=`docker ps -a|grep ${project} | awk '{print $1}'`
echo $containerId
if [ "$containerId" != "" ] ; then
docker stop $containerId
docker rm $containerId
fi
tag=`docker images |grep ${project} | awk '{print $2}'`
if [[ "$tag" =~ "$version" ]] ; then
docker rmi $imageName
fi
docker login -u admin -p Harbor12345 $harbor_addr
docker pull $imageName
docker run -d -p $host_port:$container_port --name $project $imageName
echo "SUCCESS"
EOF
chmod +x deploy.sh
./deploy.sh 192.168.20.151:80 repo demo v2.0.0 8081 8080
- 整合jenkins, 添加构造后的操作、端口参数,便于日常调整
/usr/local/test/deploy.sh 192.168.20.151:80 repo demo $demoProjectTag $host_port $container_port
6.5、整合jenkins-发送webhook到dingtalk/微信
- 企业微信
- 先拉两人建群聊,添加机器人,获得webhook地址,及使用帮助
- jenkins 安装qy wechat插件
- 在构建后添加企业微信通知接口,pipeline方式下面有,比较麻烦
- 钉钉
- 基本类似企业微信,pipiline效果看上去还可以,具体未尝试,可参考哔哩哔哩_bilibili
- 微信
- 无webhook接口,不过可借助第三方,搜索pushplus
七、jenkins流水线作业
- 新建pipeline/流水线任务
- 添加参数,比如git/TAG,端口号、webhook地址等
- 可以直接添加pipeline脚本,或用scm,调用gitlab根目录下的Jenkinsfile文件(推荐!)
- jenkinsfile格式,可以用生成器将之前的脚本搬过来, 直接在gitlab上添加、修改即可!
// Jenkinsfile
pipeline {
// 指定任务在哪个集群节点中执行
agent any
//
environment {
key = '[${currentBuild.durationString}]'
}
stages {
stage('拉取git仓库代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${demoProjectTag}']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.20.151:8929/root/demo.git']]])
sh 'git checkout $demoProjectTag'
}
}
stage('通过maven构建项目') {
steps {
sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
}
}
stage('通过sonarqube做代码质检') {
steps {
sh '''/var/jenkins_home/sonar-scanner/bin/sonar-scanner \\
-Dsonar.sources=./ \\
-Dsonar.projectname=demo \\
-Dsonar.login=d601eb06a3aea547095ad9a1455033439062eef0 \\
-Dsonar.projectKey=${JOB_NAME} \\
-Dsonar.java.binaries=./target/'''
}
}
stage('通过docker制作自定义镜像') {
steps {
sh '''mv target/*.jar docker/
docker build -t demo:$demoProjectTag docker/
docker login -u admin -p Harbor12345 192.168.20.151:80
docker tag demo:$demoProjectTag 192.168.20.151:80/repo/demo:$demoProjectTag
docker push 192.168.20.151:80/repo/demo:$demoProjectTag'''
}
}
stage('将自定义镜像推送到harbor') {
steps {
sh '''
docker login -u admin -p Harbor12345 192.168.20.151:80
docker tag demo:$demoProjectTag 192.168.20.151:80/repo/demo:$demoProjectTag
docker push 192.168.20.151:80/repo/demo:$demoProjectTag
'''
}
}
stage('通过publish over ssh 通知目标服务器') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'test1.dev.lzh', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/usr/local/test/deploy.sh 192.168.20.151:80 repo demo $demoProjectTag $host_port $container_port', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
post {
success{
sh '/var/jenkins_home/sendMessage.sh $webhook SUCCESS $JOB_NAME $demoProjectTag $currentBuild.durationString'
}
failure{
sh '/var/jenkins_home/sendMessage.sh $webhook FAILURE $JOB_NAME $demoProjectTag $currentBuild.durationString'
}
}
}
- 补充企业微信的pipeline脚本,常规版块很容易使用,pipeline不像dingtalk好用
# 脚本放在jenkins的挂载目录,调用路径 /var/jenkins_home/sendMessage.sh
cd /usr/local/docker/jenkins_docker/data
tee sendMessage.sh <<-'EOF'
#!/bin/bash
WEBHOOK="$1"
TYPE="$2"
JOB_NAME="$3"
TAG="$4"
TIME="$5"
echo $TIME
if [ "$TYPE" == "SUCCESS" ] ; then
CONTENT="项目构建成功:${JOB_NAME}! \n> 版本:${TAG}\n> 持续时间:${TIME}"
else
CONTENT="项目构建失败:${JOB_NAME}! >n- 版本:${TAG}\n> 持续时间:${TIME}"
fi
CONTENT='
{
"msgtype": "markdown",
"markdown": {
"content": "'$CONTENT'"
}
}
'
curl $WEBHOOK -H 'Content-Type: application/json' -d "${CONTENT}"
EOF
# 附linux端测试代码
chmod +x sendMessage.sh
./sendMessage.sh https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=5977b028-7a64-4322-bde5-e26a6578286d SUCCESS demo V2.0.0 11111
九、好玩的应用
9.1、portainer UI
可以管理本地、远程的docker、swarm、k8s
docker run -d -p 9001:9000 --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/portainer:/data portainer/portainer
# admin/password
# 添加远程管理主机, 资料来源 https://www.cnblogs.com/hutianyao/p/13539698.html
# 修改远程 Docker 的 docker.service 文件
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
# 重启 Docker
## 重新加载配置文件
systemctl daemon-reload
## 重启服务
systemctl restart docker
9.2、oneNav
github上很不错的一键导航页面!
mkdir -p /usr/local/docker/onenav_docker
cd /usr/local/docker/onenav_docker
docker run -itd --name="onenav" -p 80:80 --restart always \
-e USER='admin' -e PASSWORD='password' \
-v /usr/local/docker/onenav_docker/data:/data/wwwroot/default/data \
helloz/onenav
# 建议用BAISU主题,超级赞!
评论系统未开启,无法评论!