Gitlab的CI_CD自动部署前端项目
前言 之前陆续写了 Gitlab 的安装使用还有 Gitlab CI/CD 的配置使用,已经把 AspNetCore 的后端项目都做了持续集成了,尝到甜头之后,现在前端的项目也要加入自动化部署,所以经过一番折腾,有了本文~ 前文回顾: GitLab 的安装、配置、使用 持续集成指南:GitLab 的 CI/CD 工具配置与使用 跟之前的 AspNetCore 项目操作差不多,我依然使用 docke
目录7 个章节
前言
之前陆续写了 Gitlab 的安装使用还有 Gitlab CI/CD 的配置使用,已经把 AspNetCore 的后端项目都做了持续集成了,尝到甜头之后,现在前端的项目也要加入自动化部署,所以经过一番折腾,有了本文~
前文回顾:
跟之前的 AspNetCore 项目操作差不多,我依然使用 docker 部署的方式,不依赖服务器环境,就一个方便优雅~
Docker配置
我第一次用 docker 来构建前端项目,遇到很多坑,不过最终还是参考我之前的 DjangoStarter 项目和 AspNetCore 的 Dockerfile 搞定了~
思路是两个容器,一个 node 容器用来编译项目,另一个 nginx 用来提供静态文件服务,也就是说我把项目 build 出来之后,直接在容器里提供web服务,不复制出来放到服务器共享的 nginx 里了。
然后再服务器的 nginx 里做一下转发,就跟原来的使用体验一样了。(或者不转发直接用也行,取决于实际情况)
在 docker 里使用 nginx 更好,这体现在配置复杂度、权限管理、安全/审计检查之类的方面上,我就不展开了,用就完事了~
Dockerfile
FROM node:lts-alpine as build
RUN mkdir /code
WORKDIR /code
ADD package.json /code
RUN npm install --registry=http://registry.npmmirror.com
ADD . /code
RUN npm run build
FROM nginx:alpine as final
LABEL maintainer="DealiAxy <feedback@deali.cn>"
COPY --from=build /code/dist/ /usr/share/nginx/html/
EXPOSE 80
注意在nginx容器内的 COPY 一定要设置 --from 参数,不然是读取不到 node 容器里 build 好的文件的~
完成之后这个 Dockerfile 文件就是固定的,以后没有特殊情况都不需要修改了~
docker-compose.yml
没啥好说的了,其实这个 compose 也可以省略,只是我不想打 docker 命令偷懒而已~
version: '3.4'
services:
web:
restart: always
build:
context: .
ports:
- "8080:80"
Gitlab CI配置
没啥特别的
variables:
GIT_STRATEGY: none
stages:
- deploy
deploy_job:
stage: deploy
only:
- master
script:
- cd /home/gitlab-runner/projects/0_frontend/dashboard-front
- rm -rf dashboard-front
- git clone http://127.0.0.1:8080/deali/dashboard-front.git
- cd dashboard-front
- docker-compose up --build -d
小结
搞定,第一次搞这个还是遇到了很多坑,所幸没有放弃然后把问题一步步解决了。
之后每个项目只需要修改 docker-compose.yml 文件指定开放端口和 .gitlab-ci.yml 文件指定要构建的文件夹即可,比原来手动构建发布方便很多。
参考资料
注意:参考资料的这篇文章里 Dockerfile 是错的,请以本文为准。
抛开错误,参考资料这篇文章还是有些地方可以参考一下,请自行验证~
- 使用docker部署前端应用:https://zhuanlan.zhihu.com/p/102853707
_EOF_
Gitlab的CI_CD自动部署前端项目
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
Coolify: Vercel 的开源版私有化部署平替版
又一个Vercel平替,开源自托管PaaS。自动构建部署是像模像样,但界面简陋得让人想翻白眼。网络要求还挑剔,国内服务器就别凑热闹了。
2026-02-05 · DevOps · 约 1 分钟
Sentry的安装、配置、使用
前言 上一篇文章介绍了ExceptionLess这个日志收集系统:ExceptionLess的安装、配置、使用 由于ExceptionLess官方提供的客户端只有.Net/.NetCore平台和js的,本文继续介绍另一个日志收集系统:Sentry Sentry 是一个实时事件日志记录和聚合平台。(官方说的是错误监控 Error Monitor)它专门用于监视错误和提取执行适当的事后操作所需的所有信
2022-07-23 · DevOps · 约 1 分钟
lighthouse-fw:一个管理腾讯云轻量服务器防火墙的终端工具
公网IP一换手动改防火墙?这效率也配叫程序员? 一个增量diff引擎+系统钥匙串+TUI/CLI双模,443行重构包完事。 uvx直接跑,别告诉我还要pip install。
2026-05-02 · DevOps · 约 1 分钟
GitLab的安装、配置、使用
前言 上周去参与“中国数字经济创新发展大会”了,然后又忙新项目的事情,博客又有一段时间没有更新,今天周一事情比较少,立刻开始写文,最近有挺多值得记录的东西~ 进入正文,最近我们搭了个Gitlab,并且把正在开发的项目代码都迁移到自建的Gitlab上,整个过程还是比较流畅的~~(就是有点费内存~~ PS:立即下单给这台服务器买了四条16G内存组四通道~ 在此之前,我们团队一直使用Gitee企业版作为
2022-07-21 · DevOps · 约 1 分钟
讨论
共 0 条加载评论中…