网站域名是不是就是网址,网络推广服务如何退费,搭建外文网站,海阳市住房和城乡建设局官方网站一、环境准备1. 服务器准备一台Linux服务器#xff08;CentOS/Ubuntu皆可#xff09;#xff0c;推荐至少4核8GB内存已安装 Docker#xff08;及 Docker 服务已启动#xff09;已安装 GitLab Runner2. 服务器上安装 Docker #xff08;如果没装#xff09;# CentOS9以下…一、环境准备1. 服务器准备一台Linux服务器CentOS/Ubuntu皆可推荐至少4核8GB内存已安装 Docker及 Docker 服务已启动已安装 GitLab Runner2. 服务器上安装 Docker 如果没装
# CentOS9以下举例
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
sudo systemctl enable docker# 适用于 CentOS 9 / CentOS Stream 9 安装 Docker CE# 1. 卸载可能冲突的旧版本
sudo dnf remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 2. 安装必要的依赖
sudo dnf -y install dnf-plugins-core# 3. 添加 Docker 官方仓库
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 4. 安装 Docker CE--nobest 解决可能的版本依赖冲突
sudo dnf install -y --nobest docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 5. 启动 Docker
sudo systemctl start docker# 6. 设置开机自启
sudo systemctl enable docker# 7. 查看 Docker 版本
docker --version# 8. 测试运行
sudo docker run hello-world
3. 安装 GitLab Runner
# 下载二进制文件
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64# 赋予执行权限
sudo chmod x /usr/local/bin/gitlab-runner# 添加用户可选
sudo useradd --comment GitLab Runner --create-home gitlab-runner --shell /bin/bash || true# 安装 Runner 服务
sudo /usr/local/bin/gitlab-runner install --usergitlab-runner --working-directory/home/gitlab-runner# 启动 Runner 服务
sudo /usr/local/bin/gitlab-runner start
4. 将 gitlab-runner 用户加入 Docker 用户组
sudo usermod -aG docker gitlab-runner
sudo systemctl restart docker
二、GitLab Runner 注册1,登录你的 GitLab进入项目设置 CI/CD Runners 页面2,找到 registration token注册令牌3,在服务器执行注册命令替换 URL 和 token
sudo /usr/local/bin/gitlab-runner register \--non-interactive \--url http://你的gitlab地址:端口/ \--registration-token 你的注册token \--description deploy-runner \--executor shell \--tag-list deploy \--run-untaggedfalse \--lockedfalse
4,注册成功后用命令检查 Runner 状态
sudo /usr/local/bin/gitlab-runner status
三、准备项目代码和 Dockerfile12. 示例 Dockerfile
# 使用官方 Nginx 作为基础镜像默认自带 /usr/share/nginx/html 目录
FROM nginx# 设置工作目录为 Nginx 的默认静态文件目录
WORKDIR /usr/share/nginx/html/# 切换到 root 用户方便修改配置文件和目录
USER root# 将我们自定义的 Nginx 配置文件复制到容器中
# 替换掉默认的 default.conf让 Nginx 按我们的配置运行
COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf# 将打包后的前端 dist 目录复制到 Nginx 静态目录
COPY ./dist /usr/share/nginx/html/# 暴露容器的 80 端口HTTP
EXPOSE 80# 启动 Nginx 前台运行daemon off 表示不以守护进程模式运行
CMD [nginx, -g, daemon off;]
四、编写 GitLab CI 配置 .gitlab-ci.yml
#
# 全局 before_script
#
before_script:# 切换 npm 源为淘宝镜像国内安装依赖更快- npm config set registry https://registry.npmmirror.com#
# CI/CD 阶段定义
#
stages:- build # 第一阶段构建阶段编译前端代码- deploy # 第二阶段部署阶段运行容器#
# 构建 Job
#
build-job:stage: build # 该 Job 属于 build 阶段tags:- deploy # Runner 标签需和 GitLab Runner 配置一致script:# 安装依赖会使用 before_script 中设置的淘宝源- npm install# 打包生产环境代码Vue/React 等前端项目- npm run build:prod# 使用 Docker 构建镜像命名为 user-center-frontend:latest- docker build -t user-center-frontend:latest .#
# 部署 Job
#
deploy-job:stage: deploy # 该 Job 属于 deploy 阶段tags:- deploy # Runner 标签需和 GitLab Runner 配置一致script:# 如果已有旧容器则停止运行忽略错误- docker stop user-center-frontend || true# 删除旧容器忽略错误- docker rm user-center-frontend || true# 启动新容器映射宿主机 80 端口到容器 80 端口- docker run -d --name user-center-frontend -p 80:80 user-center-frontend:latest
五,nginx配置
server {listen 80; # 监听 80 端口HTTP 默认端口# # gzip 压缩配置开启传输压缩以减少流量# gzip on; # 开启 gzip 压缩gzip_min_length 1k; # 文件大于 1KB 才会压缩gzip_comp_level 9; # 压缩级别范围 1-9数字越大压缩率越高但消耗更多 CPUgzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; # 指定需要压缩的文件类型gzip_vary on; # 启用 Vary: Accept-Encoding 响应头告诉缓存服务器区分压缩和未压缩的版本gzip_disable MSIE [1-6]\.; # 针对 IE6 以下浏览器禁用 gzip避免兼容性问题# # 站点根目录# root /usr/share/nginx/html; # 指定网站的根目录静态文件所在位置include /etc/nginx/mime.types; # 引入 MIME 类型映射让浏览器正确识别文件类型location / {# 当请求的路径找不到对应文件时返回 index.html# 适用于 SPA单页应用前端路由防止刷新 404try_files $uri /index.html;}
}
六、执行流程提交代码到 GitLab包括 Dockerfile 和 .gitlab-ci.ymlGitLab CI 自动触发流水线Runner 会执行安装依赖、构建项目、构建 Docker 镜像部署阶段会停止旧容器、删除容器并重新运行最新镜像访问服务器 IP 或绑定域名的 80 端口即可访问最新前端页面七、常用排查命令查看镜像
docker images
查看运行中的容器
docker ps
查看容器日志
docker logs user-center-frontend
八、注意事项构建命令如 npm run build:prod需在 .gitlab-ci.yml 中正确填写确保能生成 dist确保服务器 Docker 服务正常GitLab Runner 有权限操作 Docker构建上下文路径和 Dockerfile 中的 COPY 路径必须匹配否则复制文件失败GitLab Runner 用户需加入 docker 组避免权限问题