部署nginx+jdk8+springboot服務到docker 映象的過程記錄
由於docker虛擬化技術的發展讓微服務的部署變得非常方便,但要將眾多型別不同的服務部署到一個映象容器中卻是有一定需求的,因為一個容器一個服務的部署方式太過於佔資源。本筆記主要從自身一個專案開始記錄下整個過程及部署過程中遇到的問題解決思路,以備份。
1、環境:
a、centos 7 並裝了docker 11.1
b、xshell 6 ,xftp 6 學校家庭版本(因為免費)
c、一個採用vue.js 開發的純靜態站點(含有html,js,css,imges)需要採用nginx 部署
d、一個spring boot 專案(jar 包)
e、jdk 1.8
2、製備基礎映象
a、採用xshell連結centos 7 , 採用 docker images 命令來檢視映象伺服器環境是否裝了docker( 隨便找個命令就可以測試docker 是否安裝或啟動)
b、 採用 docker pull centos 7 即可拉取docker 映象(至於docker 源的配置可以檢視本人相關筆記)
docker.io/centos latest e934aafc2206 3 months ago 199 MB
c、 採用 docker run -it --name mytestcentos01 -d -p 3003:3003 -v /home/soft : /home/soft -p 3080:8080 -p 3030:80 e934aafc2206 /bin/bash 例項化映象。(這裡的埠號對映和-v 引數相關參考其他部落格,本筆記不做解釋),例項化完成後 採用 docker ps -a 可以檢視該容器的狀態
d、可以採用ctrl+p+q 退出當前容器回到主機,且不會stop容器,可以採用 docker attach + 容器ID 進入容器。採用 ctrl+c 可以退出容器(關閉程序,由於docker 是c++ 編寫的)
3、JDK 1.8 安裝(基本有三種方式:本筆記採用了外部下載,通過shell 共享,通過 -v 引數共享到映象)
a、通過cd /home/soft 進入容器掛載共享目錄 ,並通過ls 檢視內容
b、切換焦點到/usr/local,並mkdir jdk (mkdir /usr/local/jdk )
c、mv /home/soft/jdk-8u171-linux-x64.tar.gz /usr/local/jdk (可以考慮在源soft目錄呼叫 tar -zxvf jdk-8u171-linux-x64.tar.gz 解壓後 mv 或 cp),
d、tar -zxvf jdk-8u171-linux-x64.tar.gz 解壓jdk 並 rm jdk-8u171-linux-x64.tar.gz
e、通過" nano /etc/profile"開啟配置項,末尾新增環境變數配置(如果沒有nano,採用yum install nano 安裝即可)
環境變數內容:
JAVA_HOME=/usr/local/jdk/jdk1.8.0_171
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar
export JAVA_HOME JRE_HOME PATH CLASSPATH
通過 ctrl+o -> ctrl+x 儲存修改並退出
f、通過 source /etc/profile 命令啟用配置生效,通過 java -version 檢視版本
4、nginx 部署 靜態vue.js 前端服務(靜態)
a、如果對nginx 版本沒有特殊要求,採用 yum install nginx 安裝即可
d、如果容器是centos ,那麼會被預設安裝到/etc/nginx/*下
e、配置
1、通過 nano nginx.conf 開啟文字
通過 include /etc/nginx/conf.d/*.conf; 可以看到該版本nginx 的配置在 /etc/nginx/conf.d/ 下,也就是說只要是在這個目錄下的 .conf 檔案都會被讀取
2、通過 cd /etc/nginx/conf.d/ 切換並 ls 檢視
3、我在專案中定義的conf 檔案為PTS_ADMIN.conf
通過 nano PTS_ADMIN.conf 編輯
1>、埠不能重複.
2>、這裡是配置該nginx 待載入的靜態資源的目錄(建議把目錄指定到該容器的掛載共享目錄/home/soft/*,方便熱更新資源.)
3>、代理服務的配置(rewrite ^/api/(.*)$ /dep/dispatch/$1 break; rewrite 的配置分為前後2部分,中間用空格分開,即:^/api/(.*)$ 為當前靜態資源中請求
路徑的攔截部分,例如: /api/a/ab/c/... 就會被攔截。後面的 /dep/dispatch/$1 為服務替換部分,上面替換後的地址:/api/dep/dispatch/a/ab/c/... 。更多nginx配置參考官方文件)
4> 儲存配置 ,採用 nginx 啟動 nginx
4、nginx 啟動,重啟
nginx stop 命令有BUG,會導致部分配置被刪除,導致無法啟動,會報nginx.pid 丟失,如果已經出現這個問題可以採用重新裝nginx(網上的解決方案不一定成功。)
5、nginx -s reload 重啟nginx 是最為安全優雅的重新載入配置的方式,推薦.
6 、 nginx 部署中可以參考 https://www.cnblogs.com/bingo1024/p/9022890.html 博文
5、 spring boot jar 服務配置與部署
a、切換目錄 cd /home/soft 後 ls
1>、nginx 靜態資源目錄
2>、 待部署jar包
b、通過 java -jar -Denv=DEV pbplatform-dep-dispatch-1.0-SNAPSHOT.jar & 命令實現服務的後臺啟動 ,通過 jobs 命令切換回主控制檯
c 、 通過 nohup java -jar -Denv=DEV pbplatform-dep-dispatch-1.0-SNAPSHOT.jar > temp.txt & 將日誌掛在到當前目錄下,方便檢視.
d、 相關參考 https://blog.csdn.net/qq_30739519/article/details/51115075 博文.
6、完工
7、鳴謝!該例子專案學習過程中參考的部分博文。,有部分列出了出處,部分忘記了。