溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker怎么部署發布線上項目

發布時間:2021-12-13 11:51:09 來源:億速云 閱讀:421 作者:iii 欄目:云計算

這篇文章主要講解了“Docker怎么部署發布線上項目”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Docker怎么部署發布線上項目”吧!

第一步:打包項目

因為springboot的項目默認都是打包成jar包的,還有自帶的tomcat容器,這里先修改打包方式

01:修改pom.xml中的打包方式

<packaging>war</packaging>

02:取消springboot自帶的tomcat容器

  <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>

03:配置插件

否則會提示缺少web.xml文件

 <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-war-plugin</artifactId>                <version>2.6</version>                <configuration>                    <failOnMissingWebXml>false</failOnMissingWebXml>                </configuration> </plugin>

04:修改springboot的啟動類

在啟動類的同級目錄下創建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);    }}

05:打包

如果時IDEA的項目直接選擇右側的maven-clean-package即可

打包成功之后,會在target目錄下生成一個war包的項目。

第二步:部署

部署需要的設備:

  1. 遠程linux主機(這里博主買的是阿里的ecs服務器

  2. 有一定的linux基礎(會簡單的幾個命令就行,比如mkdir等)

  3. 已經備案好的域名

    如果上述都具備的話,那我們開始接下來的部署

01:Docker中安裝自己項目涉及到的鏡像

這里的話博主只用到了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

指令解釋:

  1. -it:以守護進程的方式運行

  2. -p:注意這里是小寫的p,大寫的P會隨機分配端口號,這里是將容器內部的8080端口映射到外部的8888,對開外放8888端口

  3. -v:設置掛在目錄

    a:-v /myproject/myblog:/webapps 設置自己本機myblog下的項目和tomcat容器中webapps下的文件掛載起來

    b:-v /myproject/myblog/tomcatlog:/logs 設置自己本機tomcatlog下的日志和tomcat容器中logs下的日志掛載起來


好的,運行到這一步,docker中的操作結束,接下來發布項目

02:將自己的項目傳到遠程主機上

這里可以選擇用finallshell,或者xftp都可以

博主用的是finallshell,直接進入之前設置的掛在目錄/myproject/myblog,放自己的war包項目即可

注意:這里不用自己解壓,tomcat容器會自動解壓自己的war包項目

項目放好以后就可以重新啟動下tomcat容器了,這會訪問項目可以直接通過公網ip:端口號/項目名稱即可訪問了

第三步:配置nginx反向代理

項目部署好了以后,現在只能通過公網ip:端口/項目名稱訪問,但是一般的線上項目都是用過域名來訪問的,這里就需要設置下nginx的反向代理

博主這里剛開始是在docker容器中下載的nginx鏡像,配置了好久,一直不成功,之后有測試了在遠程主機中通過yum自己下載一個nginx來配置,最后還是不成功,到這里,差點都想放棄了,直接通過jar包來部署,但是,多學一點,總沒壞處,以后遇到了還能解決。

所以,最后直接在服務器中下載一個nginx的壓縮包,自己來安裝,最后成功了,詳細步驟如下

01:下載壓縮包

這里博主自己之前學的時候,電腦上有nginx壓縮包,就直接傳給了服務器

02:解壓縮nginx
tar -xvf 壓縮包名稱
03:下載nginx的依賴
yum -y install make zlib zlib-devel gcc-c++libtool openssl openssl-devel
04:安裝

首先進去你的解壓后的nginx的目錄,輸入以下指令

./configure

執行結束后,沒有error證明一切正常,之后再輸入

make && make install

好了,nginx安裝結束

05:啟動nginx服務

nginx安裝成功后,安裝目錄再/usr/local/nginx

進入目錄:

#啟動nginx服務cd /usr/local/nginx/sbin/nginx

服務啟動后,可以通過公網ip:80來進行訪問下,如果出現了nginx的錯誤頁面,證明一切正常,沒有出現,解決方法如下:

  1. 開放esc服務器的安全組80端口

  2. 關閉服務器的防火墻

防火墻指令如下:

  1. 查看firewall服務狀態

    systemctl status firewalld

    出現active:active(running)高亮顯示表示是啟動狀態

    出現active:inactive(dead)灰色表示停止,這里看單詞也行

  2. 查看firewall狀態

    firewall-cmd —state

  3. 開啟、重啟、關閉firewalld服務

    開啟:service firewalld start

    關閉:service firewalld stop

    重啟:service firewalld restart

  4. 查看防火墻規則

    firewall-cmd —list-all

  5. 查詢,開放,關閉端口

    查詢:firewall-cmd —query-port=8080/tcp

    開放:firewall-cmd —permanent —add-port=80/tcp

    移除:firewall-cmd —permanent —remove-port=8080/tcp

    重啟防火墻(修改配置后需要重啟防火墻):firewall-cmd —reload

  6. 參數解釋

    1、firwall-cmd:是Linux提供的操作firewall的一個工具;

    2、—permanent:表示設置為持久

防火墻關閉后訪問應該就沒什么問題了,如果依舊無法訪問,可以再評論區留言,或者聯系博主一起研究

06:配置nginx反向代理(重點,大坑)

首先進入自己的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:端口號/項目名稱可以訪問,就直接寫成這樣,切記不可。查看方式如下:

  1. 進入已經啟動的tomcat容器里面

    docker exec -it 容器id /bin/bash

  2. 查看自己當前容器的host地址

    cd /etc/hosts

    輸入之后會在最下面有一個172開頭的地址

  3. 退出容器:

    ctrl + p +q

配置tomcat根目錄直接訪問項目方法:

最簡單的:

將webapp下的ROOT文件刪除,將自己的項目名稱改成ROOT即可

清理電腦的dns緩存

cmd運行ipconfig /flushdns

好的,一直到這里,項目部署完成,現在就可以通過域名來直接訪問你的項目了,再部署過程中真的是巨坑,網絡環境,緩存,各種各樣的問題,不過,最后項目跑起來了,也學到了很多小知識,最后還是很開心的。

這里的話,這樣部署還是有很多問題,nginx還是沒有再docker容器中,docker需要一次啟動3個容器

感謝各位的閱讀,以上就是“Docker怎么部署發布線上項目”的內容了,經過本文的學習后,相信大家對Docker怎么部署發布線上項目這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女