1. 程式人生 > >docker一鍵部署springboot專案(二)

docker一鍵部署springboot專案(二)

上一篇,大概講了下springoot專案部署在docker中,但是在做專案的過程中,還有可能會用到redis、專案可以依賴另外一個javaweb(需要部署在tomcat中)專案、在部署的時候可能會用到nginx。同樣的,該文章也是記錄一下我在研究過程中遇到的問題和解決辦法。大佬們有好的建議歡迎評價!

關於redis、tomcat、nginx等的部署

docker部署redis

首先,我們需要下載redis映象(該步驟可以參考菜鳥教程,畢竟得承認人家寫的更全更細一點)

#下載
docker pull redis:3.2
#檢視
docker images

然後我們在啟動的時候可以修改配置檔案,例如密碼等等

#啟動
docker run --name myredis -p 6379:6379 -d redis:3.2 redis-server --appendonly yes --requirepass "myPwd" --bind 0.0.0.0
#檢視
docker ps

這樣,我們的redis就算是部署好了,叢集的話我還沒研究,後續更新。。

docker部署tomcat

同樣的,我們首先要下載tomcat映象(該步驟也可以參考菜鳥教程,畢竟得承認人家寫的更全更細一點)

#下載
docker pull tomcat
#檢視
docker images

然後我發現一個很坑的地方,是關於網路模式的,也就是訪問其他應用(例如資料庫)的坑,解決辦法是啟動,然後停止,然後重啟docker,就可以了,我倒現在也不知道是為什麼。。希望有大佬可以給出解釋

#啟動,並設定網路模式為host
docker run --name mytomcat -d -p 8081:8080 --net=host docker.io/tomcat
#重啟docker
service docker restart
#停止
docker stop mytomcat 
#刪除容器
docker rm mytomcat
#啟動tomcat,將日誌、webapps目錄和時區對映在宿主機
docker run -it -d --name mytomcat \
-p 8080:8080 \
-v /docker/tomcat/logs:/usr/local/tomcat/logs \
-v /docker/tomcat/webapps:/usr/local/tomcat/webapps \
-v /docker/tomcat/conf:/usr/local/tomcat/conf \
-v /etc/localtime:/etc/localtime \
docker.io/tomcat

然後我們進入該容器,就可以ping的到外部的應用了

#進入tomcat容器內部
docker exec -it /bin/bash mytomcat
#ping外部應用,例如www.baidu.com
ping www.baidu.com

然後我們將war包放在/docker/tomcat/webapps目錄中,重啟即可,可以在/docker/tomcat/log目錄中的日誌檔案中檢視

#重啟tomcat,可以在tomcat中檢視啟動日誌
docker restart mytomcat

這樣,我們的javaweb應用在tomcat中就算是部署好了

docker部署nginx

同樣的,我們首先要下載nginx映象(該步驟也可以參考菜鳥教程,畢竟得承認人家寫的更全更細一點)

#下載
docker pull nginx
#檢視
docker images

然後我們在伺服器上建立我們自己的配置檔案,修改配置檔案啟動即可

#啟動nginx,將部署javaweb專案的tomcat容器和springboot專案容器link進來
docker run --name=mynginx \
    --link=mytomcat:t1 \
    --link=springboot:t2 \
    -v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /root/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
    -p 8888:80 -d nginx

這樣,我們的nginx就算是部署好了

在nginx.conf中配置如下:

upstream java_web {
    server t1:8080;
}

upstream spring_boot {
    server t2:9001;
}

在default.conf中配置如下:

location /springboot_demo {
    #用於多重轉發時獲取使用者實際IP
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    #轉發原始請求的host頭部
    proxy_set_header Host $http_host;
    #轉發使用者實際發出的協議(http/https)
    proxy_set_header X-Forwarded-Proto $scheme;
    #禁用反向代理快取,保證每次請求真實轉發
    proxy_buffering off;
    #轉發到upstream塊定義的伺服器叢集
    proxy_pass http://spring_boot;
    #請求報文大小上限,預設1m,限制上傳檔案大小
    client_max_body_size  1000m;
}

最後,在瀏覽器中訪問 ip:8080/springboot_demo 就可以了,美滋滋,大功告成!

關於容器儲存,移植至其他伺服器啟動的方式見下一篇文章