婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 利用docker-compsoe部署前后端分離的項目方法

利用docker-compsoe部署前后端分離的項目方法

熱門標簽:400電話號碼辦理多少錢 山東企業外呼系統公司 濮陽好的聯通400電話申請 虛假地圖標注 承德地圖標注公司 地圖標注如何改成微信號 地圖標注黃河的位置 百度地圖標注公司位置要多少錢 靈圖uu電子寵物店地圖標注

說在前面

我們都知道,docker可以實現很簡便的部署環境。現在我們有一個前后端分離的項目,前端基于Vue開發、利用Webpakc打包為dist文件夾。后端則是一個Node.js服務,提供API接口,前端和后端是分離的。所以我們肯定是前端項目一個container,后臺項目也是一個container。那么如果是在生產環境,就會產生跨域問題。前端的請求要反向代理到后臺。大家肯定首先想到的就是使用 Nginx 設置 proxy_pass 。是的沒有錯。那么我們有了這些想法。我們如何通過 docker-compose 來實現呢?

開始動手

其實我也是才開始了解docker的。所以有很多不明白的地方,例如在docker里面,是通過image生成一個container,那么這個container,就可以當作是一個獨立的系統,這個系統也就有自己獨立的端口。那么就像我們剛剛那樣的需求,假設我們的前端在 container1 里面暴露80端口,同時映射到宿主機的80端口,后端在 container2 里面暴露3000端口,同時映射到宿主機的3000端口。那我們反向代理請求的時候,是通過宿主機來反向代理呢,還是通過container來實現呢?我在網上查閱并學習了很多其他大佬的文章,還有官網的文檔。發現直接通過container就可以實現這種需求。為什么呢?因為docker-compose,會將所有的container構建在同一網絡下,我們要找其他container,我們只需通過docker-compose里面的 service name 即可找到。 下面先來看看我們的目錄:

vueMusic
 ├─ .git
 ├─ .gitignore
 ├─ LICENSE
 ├─ README.md
 ├─ babel.config.js
 ├─ dist
 ├─ docker-compose.yml
 ├─ docs
 ├─ nginx.conf
 ├─ package-lock.json
 ├─ package.json
 ├─ public
 ├─ server
 ├─ src
 └─ vue.config.js

dist是我們的前端項目,server是我們的后端項目。 下面再來看看我們的 docker-compose.yml :

version: '3'
 services:
 music-web: #前端項目的service name
   container_name: 'music-web-container' #容器名稱
   image: nginx #指定鏡像
   restart: always
   ports:
   - 80:80
   volumes: 
   - ./nginx.conf:/etc/nginx/nginx.conf #掛載nginx配置
   - ./dist:/usr/share/nginx/html/  #掛載項目
   depends_on:
   - music-server
 music-server:  #后端項目的service name
   container_name: 'music-server-container'
   build: ./server #根據server目錄下面的Dockerfile構建鏡像
   restart: always
   expose:
   - 3000

可以看見,我們通過 volumes 屬性將宿主機的 nginx.conf 掛載到容器內的nginx配置文件,用來覆蓋原有的配置文件,同時也將 dist 掛載到容器內。我們將前端項目的容器暴露并映射給宿主機的80端口,我們將后端項目的容器暴露3000端口。那么我們在哪里實現反向代理請求呢?請看 nginx.conf :

#user nobody;
 worker_processes 1;
 events {
   worker_connections 1024;
 }
 http {
   include    mime.types;
   default_type application/octet-stream;
   sendfile    on;
   #tcp_nopush   on;
   #keepalive_timeout 0;
   keepalive_timeout 65;
   #gzip on;
   gzip on;
   gzip_min_length 5k;
   gzip_buffers   4 16k;
   #gzip_http_version 1.0;
   gzip_comp_level 3;
   gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
   gzip_vary on;
   server {
     listen 80;
     server_name www.xieyezi.com;
     #音樂app項目
     location / {
     index index.html index.htm;  #添加屬性。 
     root /usr/share/nginx/html;  #站點目錄
     }
     #音樂app項目設置代理轉發
     location /api/ {
     proxy_pass http://music-server:3000/;
     }
     error_page  500 502 503 504 /50x.html;
     location = /50x.html {
       root  /usr/share/nginx/html;
     }
   }
 }

可以看上面的 proxy_pass http://music-server:3000/; 。其中 music-server 是我們后端項目的服務名,我們通過服務名來找到這個容器,這樣就實現了反向代理。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:安康 福州 淮安 德宏 樂山 泰安 上海 鷹潭

巨人網絡通訊聲明:本文標題《利用docker-compsoe部署前后端分離的項目方法》,本文關鍵詞  利用,docker-compsoe,部署,前,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用docker-compsoe部署前后端分離的項目方法》相關的同類信息!
  • 本頁收集關于利用docker-compsoe部署前后端分離的項目方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 青神县| 阿坝县| 赣州市| 兰州市| 丰城市| 德化县| 和政县| 娄底市| 包头市| 微山县| 中卫市| 巫山县| 阿瓦提县| 石楼县| 广平县| 邢台县| 乐山市| 浦北县| 澳门| 龙门县| 乌鲁木齐市| 安康市| 饶河县| 托克逊县| 新绛县| 西林县| 伊宁县| 甘泉县| 科技| 清河县| 隆德县| 庆城县| 鲁甸县| 南雄市| 固阳县| 平南县| 调兵山市| 涡阳县| 南部县| 乐都县| 卢龙县|