使用docker安装jenkins自动部署项目
docker的安装参照之前的文章
环境准备
使用docker安装mysql
这里就使用 mysql5.7
docker pull mysql:5.7
启动mysql 并将目录挂载
docker run -p 10081:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
-d mysql:5.7
然后进入容器 开启远程访问权限
docker exec -it mysql bash
mysql -uroot -ppassword
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> flush privileges;
编写Dockerfile
# Docker image for springboot file run
# VERSION 0.0.1
# Author: qhliao
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER qhliao <402900550@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD app.jar app.jar
# 运行jar包
EXPOSE 80
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
编写shell脚本
cd `dirname $0` #进入根目录
proj_home=$PWD #工程根目录
img_output='materail-management-test' #生成镜像标签
appname='materail-management' #容器名称
port=10084 #docker暴露端口
# 获得docker容器 id和镜像 id
r_c=`docker ps -a | grep "$appname" | awk '{print $1 }'`
c=`docker ps -a | grep "$appname" | awk '{print $1 }'`
r_img=`docker images | grep "$appname" | awk '{print $3 }'`
# 如果容器正在运行,停止它
if [ "$r_c"x != ""x ]; then
docker stop "$r_c"
fi
# 删除容器
if [ "$c"x != ""x ]; then
docker rm "$c"
fi
# 删除镜像
if [ "$r_img"x != ""x ]; then
docker rmi "$r_img"
fi
# 生成镜像
docker build -t $img_output .
# 日志目录
mkdir -p $PWD/logs
chmod 777 $PWD/logs
# 启动镜像 8086为工程的端口
docker run -d --name $appname -p $port:8011 --link mysql:mysql -v /home/app/logs:/home/devlop/log -v /home/app/logs/backup:/home/devlop/log/backup $img_output
docker安装jenkins
docker pull jenkinsci/blueocean:latest
docker run --name jenkins -p 10083:8080 -p 50000:50000 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /var/docker_data/jenkins/jenkins_home:/var/jenkins_home -v /var/docker_data/jenkins/settings:/var/settings -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -d jenkinsci/blueocean
然后在 打开 ip:10083 打开Jenkins
安装插件 maven git npm 等
最后配置项目。。这里就懒得写了。。。最后点部署就行了