feat(deploy): 挂载 web/public 与 web/promotion 到 yh_web,支持热更新无需重建 dist
Made-with: Cursor
This commit is contained in:
@@ -17,7 +17,18 @@ server {
|
|||||||
add_header Cache-Control "public, immutable";
|
add_header Cache-Control "public, immutable";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# web/public 挂载到 /var/www/yh-public:与 dist 根目录同 URL(如 /logo.png),优先读挂载,无则回退 dist
|
||||||
|
location ~ ^/([^/]+\.(?:png|jpe?g|gif|ico|svg|webp|webmanifest))$ {
|
||||||
|
root /var/www/yh-public;
|
||||||
|
try_files /$1 @dist_root_public;
|
||||||
|
}
|
||||||
|
location @dist_root_public {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
try_files $uri =404;
|
||||||
|
}
|
||||||
|
|
||||||
# 推广素材:文件必须真实存在,禁止落到 SPA index.html(否则前端误判「静态存在」、视频拿到 HTML)
|
# 推广素材:文件必须真实存在,禁止落到 SPA index.html(否则前端误判「静态存在」、视频拿到 HTML)
|
||||||
|
# 宿主机 ./web/promotion 挂载覆盖本路径,改 social 下文件无需重新 npm build
|
||||||
location ^~ /promotion/ {
|
location ^~ /promotion/ {
|
||||||
try_files $uri =404;
|
try_files $uri =404;
|
||||||
add_header Cache-Control "public, max-age=86400";
|
add_header Cache-Control "public, max-age=86400";
|
||||||
|
|||||||
@@ -28,12 +28,14 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- yh_net
|
- yh_net
|
||||||
|
|
||||||
# 静态文件由脚本构建到 deploy/web/dist,挂载后替换文件即可生效
|
# 静态文件由脚本构建到 deploy/web/dist;另挂载源码目录便于热更新(改宿主机文件即生效,无需重建 dist)
|
||||||
web:
|
web:
|
||||||
image: ${REGISTRY_MIRROR:-docker.m.daocloud.io/library/}nginx:alpine
|
image: ${REGISTRY_MIRROR:-docker.m.daocloud.io/library/}nginx:alpine
|
||||||
container_name: yh_web
|
container_name: yh_web
|
||||||
volumes:
|
volumes:
|
||||||
- ./deploy/web/dist:/usr/share/nginx/html:ro
|
- ./deploy/web/dist:/usr/share/nginx/html:ro
|
||||||
|
- ./web/promotion:/usr/share/nginx/html/promotion:ro
|
||||||
|
- ./web/public:/var/www/yh-public:ro
|
||||||
- ./deploy/web/default.conf:/etc/nginx/conf.d/default.conf:ro
|
- ./deploy/web/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||||
- ./verify-root:/verify-root:ro
|
- ./verify-root:/verify-root:ro
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -15,6 +15,16 @@ server {
|
|||||||
add_header Cache-Control "public, immutable";
|
add_header Cache-Control "public, immutable";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# web/public 挂载 /var/www/yh-public;单段文件名同 dist 根 URL,优先挂载后回退 dist
|
||||||
|
location ~ ^/([^/]+\.(?:png|jpe?g|gif|ico|svg|webp|webmanifest))$ {
|
||||||
|
root /var/www/yh-public;
|
||||||
|
try_files /$1 @dist_root_public;
|
||||||
|
}
|
||||||
|
location @dist_root_public {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
try_files $uri =404;
|
||||||
|
}
|
||||||
|
|
||||||
location ^~ /promotion/ {
|
location ^~ /promotion/ {
|
||||||
try_files $uri =404;
|
try_files $uri =404;
|
||||||
add_header Cache-Control "public, max-age=86400";
|
add_header Cache-Control "public, max-age=86400";
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
|------|------|
|
|------|------|
|
||||||
| `logo.png` | **标签页图标**(`index.html` 的 `rel="icon"` / `apple-touch-icon`)+ **首页与宣传册导航**(`Home.vue`、`BrochurePage.vue`) |
|
| `logo.png` | **标签页图标**(`index.html` 的 `rel="icon"` / `apple-touch-icon`)+ **首页与宣传册导航**(`Home.vue`、`BrochurePage.vue`) |
|
||||||
|
|
||||||
更新品牌时替换本目录下的 `logo.png` 后重新构建即可(可与 `promotion/logo.png` 保持同图或分别维护)。
|
更新品牌时替换本目录下的 `logo.png` 即可。
|
||||||
|
|
||||||
**注意**:`public` 里的路径不要用 `src/assets` 那种写法;引用时始终用**根路径**,例如 `/logo.png`。
|
**Docker 部署**:`docker-compose` 已将 **`web/public` → 容器内 `/var/www/yh-public`** 只读挂载,`deploy/web/default.conf` 中配置了「根路径下单段静态文件名优先读挂载、否则回退 `dist`」。**改宿主机 `web/public/` 内文件后无需 `npm run build`**,刷新即可(注意浏览器缓存)。
|
||||||
|
|
||||||
|
**注意**:引用时用**根路径** `/logo.png`,不要用 `src/assets` 的 import 方式写 public 资源。
|
||||||
|
|||||||
Reference in New Issue
Block a user