fix:前端项目使用nginx服务代理,不在使用后端服务代理 (#100)

* fix:前端项目使用nginx服务代理,不在使用后端服务代理

* fix:修改备注
This commit is contained in:
chaorenluo 2024-04-29 18:00:29 +08:00 committed by sudoooooo
parent ac33ffa34a
commit 95917e22f0
4 changed files with 71 additions and 5 deletions

View File

@ -7,17 +7,25 @@ WORKDIR /xiaoju-survey
# 复制文件到工作区间 # 复制文件到工作区间
COPY . /xiaoju-survey COPY . /xiaoju-survey
# 安装nginx
RUN apt-get update && \
apt-get install -y nginx
RUN npm config set registry https://registry.npmjs.org/ RUN npm config set registry https://registry.npmjs.org/
# 安装项目依赖 # 安装项目依赖
RUN cd /xiaoju-survey/web && npm install && npm run build-only RUN cd /xiaoju-survey/web && npm install && npm run build-only
# 用了后端服务代理启动建议使用nginx启动 # 用了后端服务代理启动建议使用nginx启动
RUN cd /xiaoju-survey && cp -af ./web/dist/* ./server/public/ #RUN cd /xiaoju-survey && cp -af ./web/dist/* ./server/public/
# 覆盖nginx配置文件
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
RUN cd /xiaoju-survey/server && npm install && npm run build RUN cd /xiaoju-survey/server && npm install && npm run build
# 暴露端口 需要跟server的port一致 # 暴露端口 需要跟nginx的port一致
EXPOSE 3000 # EXPOSE 3000
EXPOSE 8080
# docker入口文件,运行pm2启动,并保证监听不断
# docker入口文件,启动nginx和运行pm2启动,并保证监听不断
CMD ["sh","docker-run.sh"] CMD ["sh","docker-run.sh"]

View File

@ -19,7 +19,7 @@ services:
container_name: xiaoju-survey container_name: xiaoju-survey
restart: always restart: always
ports: ports:
- "8080:3000" # API端口 - "8080:8080" # API端口
environment: environment:
XIAOJU_SURVEY_MONGO_URL: mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@xiaoju-survey-mongo:27017 # docker-compose 会根据容器名称自动处理 XIAOJU_SURVEY_MONGO_URL: mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@xiaoju-survey-mongo:27017 # docker-compose 会根据容器名称自动处理
links: links:

View File

@ -1,3 +1,7 @@
#! /bin/bash #! /bin/bash
# 启动nginx
nginx -g 'daemon on;'
# 启动后端服务
cd /xiaoju-survey/server cd /xiaoju-survey/server
npm run start:prod npm run start:prod

54
nginx/nginx.conf Normal file
View File

@ -0,0 +1,54 @@
# 启动的 worker 进程数量
worker_processes auto;
# 错误日志路径和级别
error_log /var/log/nginx/error.log warn;
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;
keepalive_timeout 65;
server {
listen 8080;
# IPv6端口
listen [::]:8080;
server_name localhost;
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
root /xiaoju-survey/web/dist;
location / {
try_files $uri $uri /management.html;
}
location /management/ {
try_files $uri $uri/ /management.html;
}
location /render/ {
try_files $uri $uri/ /render.html;
}
location /api {
proxy_pass http://127.0.0.1:3000;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 20M;
}
}