Linux centOS7里面docker部署springboot+nginx+react

lz 在學(xué)習(xí)的過程艇搀,想要把前后端項(xiàng)目都部署到docker腋颠,實(shí)現(xiàn)了在linux 虛擬機(jī)中部署項(xiàng)目袋狞。為了加深記憶涮坐,所以記錄一下填坑的過程凄贩。
準(zhǔn)備:(省略安裝虛擬機(jī)和centOS7linux系統(tǒng))

1、VMware  鏡像centOS7
2袱讹、在虛擬機(jī)中安裝docker 
3疲扎、IDEA 一個(gè)簡單的spingboot 項(xiàng)目
4、一個(gè)react項(xiàng)目

直接開始上干貨
一捷雕、在linux系統(tǒng)中安裝docker ,可以結(jié)合docker中國官方文檔https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/椒丧。如果不是root用戶,前面加上sudo 權(quán)限非区,因?yàn)槲乙呀?jīng)安裝過了瓜挽,所以貼一下之前安裝的步驟

docker官方文檔.png

1.安裝所需的軟件包。yum-utils 提供了 yum-config-manager 實(shí)用程序征绸,并且 devicemapper 存儲驅(qū)動需要:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.使用下列命令設(shè)置 stable 鏡像倉庫。您始終需要使用 stable 鏡像倉庫俄占,即使您還需要通過 edge 或 testing 鏡像倉庫安裝構(gòu)建也是如此管怠。
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
3.更新 yum 軟件包索引
sudo yum makecache fast
4.安裝最新版本的 Docker CE,或者轉(zhuǎn)至下一步以安裝特定版本
sudo yum install docker-ce
5.啟動docker:
sudo systemctl start docker
6.查 看docker當(dāng)前版本
docker version
7.查看當(dāng)前docker鏡像
docker images
二缸榄、打包springboot項(xiàng)目
1.在IDEA中新建一個(gè)springboot項(xiàng)目渤弛,我這里是dockerdemo里面加入一個(gè)簡單的HelloController.java 然后用maven打包,貼一下部分的代碼甚带,端口默認(rèn)是8080

@RequestMapping("/t-test")
@RestController
public class HelloController {

    @RequestMapping(value="/hello")
    public String hello(){
        return "hello world!";
    }
}
dockerdemo.png

2.在target目錄下可以看到打包好的文件她肯,在linux系統(tǒng)中home目錄下創(chuàng)建一個(gè)一個(gè)tt文件夾,把jar包拷貝進(jìn)這里鹰贵,然后新建一個(gè)Dockerfile文件


微信截圖_20190411165059.png

微信截圖_20190411165404.png

其中Dockerfile文件內(nèi)容

FROM java:8 
VOLUME /tmp 
ADD dockerdemo-0.0.1-SNAPSHOT.jar /dalaoyang.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/dalaoyang.jar"]

(1)cd 到tt 目錄創(chuàng)建dockerdemo 鏡像

創(chuàng)建鏡像.png

(2)之后根據(jù)dockerdemo鏡像創(chuàng)建容器并啟動容器
創(chuàng)建并啟動容器.png

(3)查看虛擬機(jī)ip地址ifconfig
查看虛擬機(jī)ip地址.png

(4)之后在后臺輸入http://192.168.11.128:8080/t-test/hello 可以看到springboot輸出結(jié)果
springboot結(jié)果.png

三、打包react項(xiàng)目
1.運(yùn)用create-app-react 創(chuàng)建一個(gè)reactdemo01
2.npm 安裝axios 測試跨域
3.在vscode 中執(zhí)行npm run build 打包react項(xiàng)目
react打包.png

這里貼一下react部分代碼:

import axios from 'axios';
...
TestKuayu = () => {

        console.log("測試跨域問題!");
        axios.post('/api/t-test/hello',
            querystring.stringify({
                id: '42',
                lastName: '你好'
            })
        )
            .then(function (response) {
                console.log("打印nginx跨域:" + JSON.stringify(response.data));
            })
            .catch(function (error) {
                console.log(error);
            });
    }
...
 <h2>{this.state.msg}</h2>
              這是首頁組件的內(nèi)容
<button onClick={this.TestKuayu}>測試跨域問題</button>
<hr />

(1)把打包好的文件放入虛擬中甫窟,home 目錄下新建comp

復(fù)制react的build文件夾.png

(2)先安裝docker-compose
進(jìn)入下面的網(wǎng)址下載目前的最新版:
https://github.com/docker/compose/releases/tag/1.14.0-rc2
網(wǎng)頁拉到最下面裙顽,下載:
docker-compose-Linux-x86_64
然后將文件上傳到 /usr/local/bin/ 文件夾下,然后將其重命名為docker-compose敷钾,修改此文件的權(quán)限枝哄,增加可執(zhí)行:chmod +x /usr/local/bin/docker-compose
查看docker-compose版本,如下即安裝成功
docker-compose.png

docker-compose常用的命令:
docker-compose --help你會看到docker-compose命令
docker-compose down 關(guān)閉并刪除容器
(3)在comp目錄下新建一個(gè)compose.yml

version: '2'
services:
  # 服務(wù)名稱
  nginx:
    # 鏡像:版本
    image: nginx:latest 
    # 映射容器80端口到本地80端口
    ports:
     - "80:80"
    # 數(shù)據(jù)卷 映射本地文件到容器
    volumes:
    # 映射nginx.conf文件到容器的/etc/nginx/conf.d目錄并覆蓋default.conf文件
     - ./nginx.conf:/etc/nginx/conf.d/default.conf
    # 映射build文件夾到容器的/usr/share/nginx/html文件夾
     - ./build:/usr/share/nginx/html
    # 覆蓋容器啟動后默認(rèn)執(zhí)行的命令阻荒。
    command: /bin/bash -c "nginx -g 'daemon off;'"

(4)在comp目錄下新建一個(gè)nginx.conf

#user  nobody;
#worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#events {
#   worker_connections  1024;
#}

#http {
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;

        location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri /index.html;
        }

        # /api 代理到下面 地址 其中192.168.11.128是你虛擬機(jī)上面的步驟中能正常訪問springboot后臺
        location /api/ {          
             proxy_pass http://192.168.11.128:8080/;
        }
       

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   /usr/share/nginx/html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
#}

(5)在虛擬機(jī)終端進(jìn)入comp目錄
執(zhí)行docker-compose up -d 即可創(chuàng)建一個(gè)nginx容器
如下圖docker ps查看已經(jīng)啟動的容器挠锥,一個(gè)是dockerdemo ,一個(gè)是nginx


創(chuàng)建react容器.png

(6)訪問react 項(xiàng)目
http:192.168.11.128:80 可以看到react項(xiàng)目正常顯示侨赡,點(diǎn)擊測試跨域問題蓖租,可以看到react項(xiàng)目正常訪問另一個(gè)容器中springboot后臺項(xiàng)目纱控。


react訪問springboot后臺.png

至此整個(gè)流程跑通,因?yàn)槭窃诠镜碾娔X寫文章菜秦,有點(diǎn)倉促甜害。
如果讀者發(fā)現(xiàn)有什么不正確,請指出球昨。
有興趣的朋友可以尔店,一起交流。
ly_dv主慰,一個(gè)小菜鳥嚣州。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市共螺,隨后出現(xiàn)的幾起案子该肴,更是在濱河造成了極大的恐慌,老刑警劉巖藐不,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匀哄,死亡現(xiàn)場離奇詭異,居然都是意外死亡雏蛮,警方通過查閱死者的電腦和手機(jī)涎嚼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挑秉,“玉大人法梯,你說我怎么就攤上這事∠牛” “怎么了立哑?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姻灶。 經(jīng)常有香客問我铛绰,道長,這世上最難降的妖魔是什么木蹬? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任至耻,我火速辦了婚禮,結(jié)果婚禮上镊叁,老公的妹妹穿的比我還像新娘尘颓。我一直安慰自己,他們只是感情好晦譬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布疤苹。 她就那樣靜靜地躺著,像睡著了一般敛腌。 火紅的嫁衣襯著肌膚如雪卧土。 梳的紋絲不亂的頭發(fā)上惫皱,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機(jī)與錄音尤莺,去河邊找鬼旅敷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛颤霎,可吹牛的內(nèi)容都是我干的媳谁。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼友酱,長吁一口氣:“原來是場噩夢啊……” “哼晴音!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缔杉,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤锤躁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后或详,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體系羞,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年鸭叙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了觉啊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沈贝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勋乾,到底是詐尸還是另有隱情宋下,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布辑莫,位于F島的核電站学歧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏各吨。R本人自食惡果不足惜枝笨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揭蜒。 院中可真熱鬧横浑,春花似錦、人聲如沸屉更。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑰谜。三九已至欺冀,卻和暖如春树绩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隐轩。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工饺饭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人职车。 一個(gè)月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓瘫俊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親提鸟。 傳聞我的和親對象是個(gè)殘疾皇子军援,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評論 2 349