輕鬆使用 Docker nginx 打包兩個 Vue 專案進行部署

前陣子準備部署一個專案,分別為前端使用者介面及管理員後台介面並切成兩個 Vue 專案,需求是希望統一打包成一個容器並使用資料夾的方式去區分,希望的網址呈現如下:

http://127.0.0.1/
http://127.0.0.1/admin/

前置作業需要先將 Vue 專案 Build 出來,再來開始撰寫 Dockerfile , 當然也可以寫個小腳本來讓所有動作都自動化

Dockerfile

FROM nginx

MAINTAINER RICK JIANG

COPY /admin/dist/ /usr/share/nginx/html/admin
COPY /frontend/dist/ /usr/share/nginx/html/
COPY ./nginx.conf /etc/nginx/conf.d/default.conf

Nginx Default.conf

server {
    gzip on;
    listen       80;
    listen  [::]:80;
    server_name  localhost;

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

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

    location @rewrites {
        rewrite ^(.*)$ /index.html last;
    }
}

將 Dockerfile 及 Default.conf 跟 Vue 專案的資料夾放在同一個目錄下就可以執行 Docker build . ,簡簡單單就可以打包成容器並部署

Leave a comment