1. 程式人生 > >使用docker和jenkins簡單部署springboot專案

使用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