使用docker和jenkins简单部署springboot项目
安装docker
Docker 要求 CentOS 系统的内核版本高于 3.10
uname -r 3.10.0-327.el7.x86_64
安装docker
yum -y install docker-io
启动docker
service docker start
这里最好修改写docker的镜像源,用网易的镜像地址
/etc/docker/daemon.json
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
测试运行 hello-world
docker run hello-world
安装nginx
拉取nginx镜像
docker pull nginx
查看镜像
docker images nginx
创建宿主机路径
mkdir nginx
启动容器
80和80909端口做映射 挂载需要的路径,最重要的是nginx.conf,--name容器名字
docker run -p 80:80 -p 8090:8090 --name mynginx -v
/usr/local/cci/files:/www/files -v
$PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d
nginx
查看容器情况
docker ps -a
安装redis
拉取redis镜像
docker pull redis:3.2
查看镜像
docker images redis:3.2
创建宿主机路径
mkdir redis
启动容器
--requirepass 密码, --appendonly redis持久化, redis-server 在容器执行redis-server启动命令
docker run -p 6379:6379 --name myredis -v $PWD/data:/data -d redis:3.2 redis-server --requirepass 123456 --appendonly yes
进入容器
docker exec -it 容器id bash
./redis-cli -h 127.0.0.1 -p 6379 -a Passw0rd
或者进入redis-cli
docker exec -it 容器idredis-cli
info查看redis情况
安装mysql
拉取mysql
docker pull mysql:5.7
查看镜像
docker images mysql:5.7
创建宿主机路径
mkdir mysql
启动容器
MYSQL_ROOT_PASSWORD 初始化密码,lower_case_table_names=1 忽略大小写
docker run -p 3306:3306 --name mymysql -v
$PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v
$PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
--lower_case_table_names=1
用navicat连接成功即可
安装jenkins
拉取jenkins
docker pull jenkins
查看镜像
docker images jenkins
创建宿主机路径
mkdir jenkins
启动容器
--privileged=true 防火墙设置
docker run -itd -p 8082:8080 -p 50000:50000 --name jenkins --privileged=true -v /jenkins:/var/jenkins_home jenkins
浏览器访问ip:8082访问jenkins,输入密码,选择默认插件
安装java
拉取java
docker pull java:8
查看镜像
docker images java:8
部署项目
jenkins部署springboot项目
jenkins中下载maven插件,或者用宿主机的maven,需要jenkins启动时挂载
jenkins配置好ssh连接
创建maven项目,项目名,描述
git地址,用户名和密码,分支
构建选择maven配置
选择execute shell script on remote host using ssh
选择ssh连接,输入ssh脚本
脚本步骤:
下载springboot项目里的Dockerfile文件到服务文件下,Dockerfile如下:
FROM java:8
EXPOSE 8080
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
VOLUME /tmp
ADD qr.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
传输jar到服务文件下
停止对应docker容器 docker stop
删除对应docker容器 docker rm
删除对应docker镜像 docker rmi
重新构建docker镜像 docker built -t 服务路径
启动容器
--spring.cloud.config.profile=prod 指定配置文件
docker run --name qr -v /etc/localtime:/etc/localtime -d -p
8080:8080 --link myredis:redis -v
/usr/local/cci/files/:/usr/local/cci/files/ -v
/datadisk/docker/logs/qr-logs:/datadisk/logs/service/qr/ qr java -jar
-Dfile.encoding=UTF8 -Duser.timezone=GMT+08
--spring.cloud.config.profile=prod -Xmx1000m /datadisk/docker/qr/qr.jar
因为上面redis容器开启了防火墙,所以这里时连接不上的,需要用到--link
myredis:redis,springboot直接redis配置host为"redis"即可,因为所有服务都是在同一docker下,如果容器时没有开启防火墙的,可以用容器ip访问。
查看容器ip命令 docker inspect 容器id