快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
1https://github.com/Kele-Bingtang/vitepress-theme-teek Teek是一个基于VitePress二开的(文档库和博客 二合一)主题,利用pnpm工具打包。
2
3目前我已经在宿主机利用pnpm打包好了dist数据,其路径为/root/teek/dist
4
5请问如何基于这个dist静态数据 利用docker来把这个博客跑起来?以下是基于已有 dist 目录部署 VitePress 博客到 Docker 的完整方案:
1# 直接挂载宿主机dist目录到Nginx容器
2docker run -d -p 8080:80 \
3 -v /root/teek/dist:/usr/share/nginx/html \
4 --name teek-blog \
5 nginx:alpine验证访问:http://服务器IP:8080
特点:
Dockerfile 1# /root/teek/Dockerfile
2FROM nginx:alpine
3
4# 删除默认欢迎页
5RUN rm -rf /usr/share/nginx/html/*
6
7# 复制打包好的静态文件
8COPY ./dist /usr/share/nginx/html
9
10# 自定义nginx配置(可选)
11COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
12
13# 设置权限(解决403问题)
14RUN chown -R nginx:nginx /usr/share/nginx/html 1# /root/teek/nginx-custom.conf
2server {
3 listen 80;
4 server_name localhost;
5
6 location / {
7 root /usr/share/nginx/html;
8 index index.html;
9 try_files $uri $uri/ /index.html; # 支持Vue Router history模式
10 }
11
12 # 自定义错误页
13 error_page 500 502 503 504 /50x.html;
14} 1cd /root/teek
2
3# 构建镜像
4docker build -t teek-blog .
5
6# 运行容器(后台模式 + 开机自启)
7docker run -d \
8 -p 80:80 \
9 --name teek-blog \
10 --restart unless-stopped \
11 teek-blog 1# 阶段1:使用Node构建
2FROM node:18 as builder
3WORKDIR /app
4COPY . .
5RUN corepack enable && pnpm install && pnpm docs:build
6
7# 阶段2:仅保留静态文件
8FROM nginx:alpine
9COPY --from=builder /app/dist /usr/share/nginx/html
10COPY nginx-custom.conf /etc/nginx/conf.d/default.conf1HEALTHCHECK --interval=30s --timeout=3s \
2 CMD curl -f http://localhost/ || exit 1| 问题现象 | 解决方法 |
|---|---|
| 访问出现404 | 确保Nginx配置包含 try_files $uri $uri/ /index.html |
| 403 Forbidden | 在Dockerfile中添加 chown -R nginx:nginx /usr/share/nginx/html |
| CSS/JS加载路径错误 | 检查VitePress配置中 base 是否设置为Docker部署的子路径(如 /blog/) |
| 中文乱码 | 在Nginx配置中添加 charset utf-8; |
1docker ps -a | grep teek-blog1docker logs -f teek-blog1docker exec -it teek-blog sh1gzip on;
2gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;1location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
2 expires 1y;
3 add_header Cache-Control "public";
4}1/root/teek/
2├── dist/ # 已打包的静态文件
3├── Dockerfile # 镜像构建文件
4├── nginx-custom.conf # 自定义Nginx配置
5└── .dockerignore # 忽略文件(可选)按上述步骤操作后,您的Teek博客将在Docker中稳定运行。如需HTTPS支持,可参考Nginx的SSL证书配置方案。
步骤1:创建 Dockerfile
1# /root/teek/Dockerfile
2FROM nginx:alpine
3
4# 删除默认欢迎页
5RUN rm -rf /usr/share/nginx/html/*
6
7# 复制打包好的静态文件
8COPY ./dist /usr/share/nginx/html
9
10# 自定义nginx配置(可选)
11COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
12
13# 设置权限(解决403问题)
14RUN chown -R nginx:nginx /usr/share/nginx/html步骤2:(可选)自定义Nginx配置
1# /root/teek/nginx-custom.conf
2server {
3 listen 80;
4 server_name localhost;
5
6 location / {
7 root /usr/share/nginx/html;
8 index index.html;
9 try_files $uri $uri/ /index.html; # 支持Vue Router history模式
10 }
11
12 # 自定义错误页
13 error_page 500 502 503 504 /50x.html;
14}步骤3:构建并运行
1cd /root/teek-docker
2
3# 构建镜像
4docker build -t teek-blog .
5
6# 运行容器(后台模式 + 开机自启)
7docker run -d \
8 -p 8054:80 \
9 --name teek-blog \
10 --restart unless-stopped \
11 teek-blog
12
13
14#dockre一键启动teek博客
15docker run -d -p 8054:80 --name teek-blog --restart unless-stopped teek-blog
16
17---
18##tag配置最终配置:
1#dockre一键启动teek博客
2docker run -d -p 8054:80 --name docker.cnb.cool/onedayxyy/vitepress-theme-teek-one-public/teek-blog --restart unless-stopped teek-blog效果:http://106.75.214.199:8054/

日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白