這篇文章主要講解了“Docker怎么部署發布線上項目”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Docker怎么部署發布線上項目”吧!
因為springboot的項目默認都是打包成jar包的,還有自帶的tomcat容器,這里先修改打包方式
<packaging>war</packaging>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
否則會提示缺少web.xml文件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin>
在啟動類的同級目錄下創建SpringBootStartApplication.class
package com.hui.myblog;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;/** * @author www.huiblog.top * @date 2020/9/24 19:22 * QQ:2473181454 * 概要: */public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意這里要指向原先用main方法執行的Application啟動類 return builder.sources(MyblogApplication.class); }}
如果時IDEA的項目直接選擇右側的maven-clean-package即可
打包成功之后,會在target目錄下生成一個war包的項目。
部署需要的設備:
遠程linux主機(這里博主買的是阿里的ecs服務器)
有一定的linux基礎(會簡單的幾個命令就行,比如mkdir等)
已經備案好的域名
如果上述都具備的話,那我們開始接下來的部署
這里的話博主只用到了tomcat,mysql,nginx
下載鏡像,配置鏡像,啟動容器這里博主就不廢話了
不會的可以看下這篇文章:Docker簡單使用
這里記錄下配置tomcat鏡像步驟,因為這里博主遇到了大坑
這里博主選擇的是tomcat7.0
docker pull tomcat:7.0
docker run -it -p 8888:8080 -v /myproject/myblog:/webapps -v /myproject/myblog/tomcatlog:/logs tomcat:7.0 /bin/bash
指令解釋:
-it:以守護進程的方式運行
-p:注意這里是小寫的p,大寫的P會隨機分配端口號,這里是將容器內部的8080端口映射到外部的8888,對開外放8888端口
-v:設置掛在目錄
a:-v /myproject/myblog:/webapps 設置自己本機myblog下的項目和tomcat容器中webapps下的文件掛載起來
b:-v /myproject/myblog/tomcatlog:/logs 設置自己本機tomcatlog下的日志和tomcat容器中logs下的日志掛載起來
好的,運行到這一步,docker中的操作結束,接下來發布項目
這里可以選擇用finallshell,或者xftp都可以
博主用的是finallshell,直接進入之前設置的掛在目錄/myproject/myblog,放自己的war包項目即可
注意:這里不用自己解壓,tomcat容器會自動解壓自己的war包項目
項目放好以后就可以重新啟動下tomcat容器了,這會訪問項目可以直接通過公網ip:端口號/項目名稱即可訪問了
項目部署好了以后,現在只能通過公網ip:端口/項目名稱訪問,但是一般的線上項目都是用過域名來訪問的,這里就需要設置下nginx的反向代理
博主這里剛開始是在docker容器中下載的nginx鏡像,配置了好久,一直不成功,之后有測試了在遠程主機中通過yum自己下載一個nginx來配置,最后還是不成功,到這里,差點都想放棄了,直接通過jar包來部署,但是,多學一點,總沒壞處,以后遇到了還能解決。
所以,最后直接在服務器中下載一個nginx的壓縮包,自己來安裝,最后成功了,詳細步驟如下
這里博主自己之前學的時候,電腦上有nginx壓縮包,就直接傳給了服務器
tar -xvf 壓縮包名稱
yum -y install make zlib zlib-devel gcc-c++libtool openssl openssl-devel
首先進去你的解壓后的nginx的目錄,輸入以下指令
./configure
執行結束后,沒有error證明一切正常,之后再輸入
make && make install
好了,nginx安裝結束
nginx安裝成功后,安裝目錄再/usr/local/nginx
進入目錄:
#啟動nginx服務cd /usr/local/nginx/sbin/nginx
服務啟動后,可以通過公網ip:80來進行訪問下,如果出現了nginx的錯誤頁面,證明一切正常,沒有出現,解決方法如下:
開放esc服務器的安全組80端口
關閉服務器的防火墻
防火墻指令如下:
查看firewall服務狀態
systemctl status firewalld
出現active:active(running)高亮顯示表示是啟動狀態
出現active:inactive(dead)灰色表示停止,這里看單詞也行
查看firewall狀態
firewall-cmd —state
開啟、重啟、關閉firewalld服務
開啟:service firewalld start
關閉:service firewalld stop
重啟:service firewalld restart
查看防火墻規則
firewall-cmd —list-all
查詢,開放,關閉端口
查詢:firewall-cmd —query-port=8080/tcp
開放:firewall-cmd —permanent —add-port=80/tcp
移除:firewall-cmd —permanent —remove-port=8080/tcp
重啟防火墻(修改配置后需要重啟防火墻):firewall-cmd —reload
參數解釋
1、firwall-cmd:是Linux提供的操作firewall的一個工具;
2、—permanent:表示設置為持久
防火墻關閉后訪問應該就沒什么問題了,如果依舊無法訪問,可以再評論區留言,或者聯系博主一起研究
首先進入自己的nginx配置文件目錄,如果你的安裝方法和我一樣,那路徑應該也是相同的
cd /usr/local/nginx/conf
進入之后可以看到有個nginx.conf文件
upstream tdl { server 這里的查看方式會在下面指出:8080[切記這里不要寫/項目名稱]; } server { listen 80; server_name 公網ip; location / { proxy_pass http://tdl; } }
tdl中的server的地址是你docker容器中已經啟動的tomcat容器的地址,這里博主理解的是每一個容器都相當于是一個小型獨立的centos虛擬機,切記不要覺得這會項目通過公網ip:端口號/項目名稱可以訪問,就直接寫成這樣,切記不可。查看方式如下:
進入已經啟動的tomcat容器里面
docker exec -it 容器id /bin/bash
查看自己當前容器的host地址
cd /etc/hosts
輸入之后會在最下面有一個172開頭的地址
退出容器:
ctrl + p +q
配置tomcat根目錄直接訪問項目方法:
最簡單的:
將webapp下的ROOT文件刪除,將自己的項目名稱改成ROOT即可
清理電腦的dns緩存
cmd運行ipconfig /flushdns
好的,一直到這里,項目部署完成,現在就可以通過域名來直接訪問你的項目了,再部署過程中真的是巨坑,網絡環境,緩存,各種各樣的問題,不過,最后項目跑起來了,也學到了很多小知識,最后還是很開心的。
這里的話,這樣部署還是有很多問題,nginx還是沒有再docker容器中,docker需要一次啟動3個容器
感謝各位的閱讀,以上就是“Docker怎么部署發布線上項目”的內容了,經過本文的學習后,相信大家對Docker怎么部署發布線上項目這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。