docker一鍵部署springboot專案(二)
阿新 • • 發佈:2018-12-21
上一篇,大概講了下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 就可以了,美滋滋,大功告成!
關於容器儲存,移植至其他伺服器啟動的方式見下一篇文章