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