.net專案使用Docker部署(包括解決後臺驗證碼,部署後不顯示的問題)

青衫凉薄提笔發表於2024-08-02

Vue部署到Docker

參考文件:手把手教你用 Docker 部署 Vue3 專案_docker部署vue3專案-CSDN部落格

參考文件:dockerfile 部署前端vue專案_vue dockerfile-CSDN部落格

nginx文件:使用docker安裝nginx - 靜以修身儉以養德 - 部落格園 (cnblogs.com)

結合使用了兩個文件的方法和DockerFIle

區別

第一篇使用的是刪除nginx預設的 default.conf配置檔案然後透過DockerFile進行替換

server {
    listen       80;
    server_name  localhost; # 修改為docker服務宿主機的ip
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

DockerFile

FROM nginx:該映象是基於nginx:latest映象構建的
 
MAINTAINER onesummer:新增說明
 
RUN rm /etc/nginx/conf.d/default.conf:刪除目錄下的default.conf檔案
 
ADD default.conf /etc/nginx/conf.d/:將default.conf複製到/etc/nginx/conf.d/下,用本地的default.conf配置來替換nginx映象裡的預設配置
 
COPY dist/ /usr/share/nginx/html/:將專案根目錄下dist資料夾(構建之後才會生成)下的所有檔案複製到映象/usr/share/nginx/html/目錄下

第二篇是透過替換nginx預設的nginx.conf使用DockerFIle進行替換

同時需要去建立三個資料夾,然後去替換預設的index

image-20240715010700670

 //nginx.conf檔案
user  nginx;
worker_processes  auto;
 
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    #gzip  on;
 
  
    server {
        listen       80;
        listen  [::]:80;
		client_max_body_size 20m; 
         client_body_buffer_size 1m;
        #access_log  /var/log/nginx/host.access.log  main;
 
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        
 
        #生產環境介面反向代理配置
        location /stage-api/ {
            #保留代理之前的host 包含客戶端真實的域名和埠號
            proxy_set_header    Host  $http_host;
            #保留代理之前的真實客戶端ip
            proxy_set_header    X-Real-IP  $remote_addr;
            #這個Header和X-Real-IP類似,但它在多級代理時會包含真實客戶端及中間每個代理伺服器的IP
            proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
            #表示客戶端真實的協議(http還是https)
            proxy_set_header X-Forwarded-Proto $scheme;
 
            #寫後端服務埠
            proxy_pass http://192.168.1.164:29097/;
        }
 
        #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;
        }
 
    }
 
}

Docker

FROM nginx
 
# 作者資訊
MAINTAINER lxp
 
# 掛載目錄
VOLUME /usr/share/nginx/html
 
# 複製conf檔案到路徑
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
 
# 複製html檔案到路徑
COPY ./html /usr/share/nginx/html

結合

因為我是修改nginx.conf檔案同時,並且不想要去建立額外的資料夾所以我就使用了兩者結合的方法

image-20240715011323723

Dockerfile

FROM nginx
 
MAINTAINER onesummer
 
RUN rm /etc/nginx/nginx.conf  //刪除預設的nginx.conf
 
ADD nginx.conf /etc/nginx/   //新增nginx.conf
 
COPY dist/ /usr/share/nginx/html/

因為我們使用的Element-admin所以需要對nginx.conf做出一定的修改,參照第二篇進行修改

vue3-element-admin: 🔥Vue3 + Vite5 + TypeScript + Element-Plus 構建的後臺管理前端模板,配套介面文件和後端原始碼,vue-element-admin 的 Vue3 版本。 (gitee.com)結合官方的釋出文件

image-20240715011700770

 
user  nginx;
worker_processes  auto;
 
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    #gzip  on;
   server {
	listen     80;
	server_name  localhost;
	location / {
			root /usr/share/nginx/html;
			index index.html index.htm;
	}
	# 反向代理配置
	location /prod-api/ {
            # vapi.youlai.tech 替換後端API地址,注意保留後面的斜槓 /
            proxy_pass http://101.200.241.33:8081/; 
	}
}
 
}

在docker 工作目錄下執行命令

docker build -t zhongbeida-nginx-test:v1 .

!!! 一定注意後面有一個點  !!!

docker 會基於dockerfile檔案中得配置  對專案進行生成映象

-t  後面是自定義得映象名稱
冒號後是自定義得映象版本

打包映象後 啟動容器

docker run -d --name zhongbeida-font-nginx -p 28086:80  --restart always zhongbeida-nginx-test:v1
--name 後面是你要對啟動得容器得命名


-p 冒號前面是你要對映得埠號 

最後是上一步打包得映象名稱和版本

相關文章