Jenkins下用DockerFile自動部署Java(SpringBoot)專案
阿新 • • 發佈:2020-08-14
Jenkins下用DockerFile自動部署Java(SpringBoot)專案,簡單自用,勿噴
一、Jenkins構建Java(SpringBoot)專案
新建-構建一個Maven專案
需要提一下,現在新安裝的沒有這個選項,需要在外掛裡安裝一下 Maven Integration
java配置,其他配置檢視以前文章
以上配置即可配置完成
二、釋出到伺服器,DockerFile部署自動構建
Publish SSH配置
這裡在目標伺服器上放了個shell命令,我這裡的web是做了個Nginx的負載均衡,所以路徑方面自行修改
Dockerfile配置檔案,每行的意義網上都有,這裡就不介紹了
FROM java:8 #java1.8基礎映象 VOLUME /tmp #建立/tmp目錄並持久化到Docker資料資料夾,因為Spring Boot使用的內嵌Tomcat容器預設使用/tmp作為工作目錄 MAINTAINER test #作者名稱 ADD web-0.0.1-SNAPSHOT.jar test/test_web0.jar #複製jar到test下且重新命名為test_web0.jar EXPOSE 8506 #容器開放埠 ENTRYPOINT ["java","-jar","-Djava.security.egd=file:/dev/.urandom","test/test_web0.jar"]. #容器執行命令
刪除、過載映象容器等操作shell,這樣做感覺不是太好,以後有更好的辦法在解決
#!/bin/bash -l docker stop test_web0; #停止容器 docker rm test_web0; #刪除容器 docker rmi test/test_web0; #刪除映象 cd /usr/local/wwwroot/test_web/test_web0; #進入目錄 docker build -t test/test_web0.; #構建映象 .為當前目錄的dockerfile docker run -t -d --name test_web0-p 192.168.2.1:8506:8506 test/test_web0; #建立容器
到這jar包就可以訪問了
三、簡單的nginx負載均衡(docker下,可略)
這裡的前提是我們已經做好了3個web站點
首先下載nginx映象
docker images nginx
自定義一個目錄,寫一個新的nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 5s;
proxy_send_timeout 5s;
proxy_read_timeout 5s;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
upstream tomcat { #配置如下,3個WEB
server 192.168.2.1:9006;
server 192.168.2.2:9016;
server 192.168.2.3:9026;
}
server { #集中在一個ip
listen 9999;
server_name 192.168.2.1;
location / {
proxy_pass http://tomcat;
index index.html index.htm;
}
}
include /etc/nginx/conf.d/*.conf;
}
配置完執行
docker run -it -d --name n1 -v /user/n1/nginx.conf:/etc/nginx/nginx.conf --net=host --privileged nginx
還可以用keepalived做成高可用的負載均衡,以後再說