十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹如何利用docker-compsoe部署前后端分離的項目,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

10年積累的做網(wǎng)站、網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有富源免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
開始動手
其實我也是才開始了解docker的。所以有很多不明白的地方,例如在docker里面,是通過image生成一個container,那么這個container,就可以當作是一個獨立的系統(tǒng),這個系統(tǒng)也就有自己獨立的端口。那么就像我們剛剛那樣的需求,假設我們的前端在 container1 里面暴露80端口,同時映射到宿主機的80端口,后端在 container2 里面暴露3000端口,同時映射到宿主機的3000端口。那我們反向代理請求的時候,是通過宿主機來反向代理呢,還是通過container來實現(xiàn)呢?我在網(wǎng)上查閱并學習了很多其他大佬的文章,還有官網(wǎng)的文檔。發(fā)現(xiàn)直接通過container就可以實現(xiàn)這種需求。為什么呢?因為docker-compose,會將所有的container構建在同一網(wǎng)絡下,我們要找其他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 #根據(jù)server目錄下面的Dockerfile構建鏡像 restart: always expose: - 3000
可以看見,我們通過 volumes 屬性將宿主機的 nginx.conf 掛載到容器內(nèi)的nginx配置文件,用來覆蓋原有的配置文件,同時也將 dist 掛載到容器內(nèi)。我們將前端項目的容器暴露并映射給宿主機的80端口,我們將后端項目的容器暴露3000端口。那么我們在哪里實現(xiàn)反向代理請求呢?請看 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項目設置代理轉(zhuǎn)發(fā)
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 是我們后端項目的服務名,我們通過服務名來找到這個容器,這樣就實現(xiàn)了反向代理。
以上是“如何利用docker-compsoe部署前后端分離的項目”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!