diff --git a/.drone.yml b/.drone.yml index afb1372..220edc2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -27,9 +27,11 @@ steps: - name: dockersock path: /var/run/docker.sock commands: + - mkdir -p /opt/alert-front/conf + - cp scripts/nginx.conf /opt/alert-front/conf/default.conf - docker stop alert-front || true - docker rm alert-front || true - - docker run -d --restart always --name alert-front --network alert-net -p 5000:5000 alert-front:latest + - docker run -d --restart always --name alert-front --network alert-net -p 5000:5000 -v /opt/alert-front/conf:/etc/nginx/conf.d:ro alert-front:latest volumes: - name: dockersock diff --git a/scripts/Dockerfile b/scripts/Dockerfile index 3ab1d0f..a0dc1d6 100644 --- a/scripts/Dockerfile +++ b/scripts/Dockerfile @@ -23,11 +23,15 @@ FROM nginx:stable-alpine AS production # 支持 .mjs 类型 RUN echo "types { application/javascript js mjs; }" > /etc/nginx/conf.d/mjs.conf +RUN rm -f /etc/nginx/conf.d/default.conf + # 拷贝构建产物 COPY --from=builder /app/dist /usr/share/nginx/html # 拷贝 nginx 配置 -COPY --from=builder /app/scripts/nginx.conf /etc/nginx/nginx.conf +COPY --from=builder /app/scripts/nginx.conf /etc/nginx/conf.d/default.conf + +VOLUME ["/etc/nginx/conf.d"] EXPOSE 5000 CMD ["nginx", "-g", "daemon off;"] diff --git a/scripts/nginx.conf b/scripts/nginx.conf index 5b9ae35..cbe1c3a 100644 --- a/scripts/nginx.conf +++ b/scripts/nginx.conf @@ -1,51 +1,35 @@ -worker_processes 1; - -events { - worker_connections 1024; -} - -http { - include mime.types; - default_type application/octet-stream; - - sendfile on; - - server { - listen 5000; - server_name _; - client_max_body_size 20M; - - # 静态资源和前端页面 - location / { - root /usr/share/nginx/html; - try_files $uri $uri/ /index.html; - index index.html; - - # CORS - add_header 'Access-Control-Allow-Origin' '*'; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; - add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; - if ($request_method = 'OPTIONS') { - add_header 'Access-Control-Max-Age' 1728000; - add_header 'Content-Type' 'text/plain charset=UTF-8'; - add_header 'Content-Length' 0; - return 204; - } +server { + listen 5000; + server_name _; + client_max_body_size 20M; + + location / { + root /usr/share/nginx/html; + try_files $uri $uri/ /index.html; + index index.html; + + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain charset=UTF-8'; + add_header 'Content-Length' 0; + return 204; } + } - # 代理 API 请求到后端容器 - location /admin-api/ { - proxy_pass http://alert-backend:48080; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } + location /admin-api/ { + proxy_pass http://alert-backend:48080; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } - error_page 500 502 503 504 /50x.html; + error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } + location = /50x.html { + root /usr/share/nginx/html; } }