Jenkins+gitee+nginx+docker 部署vue项目

1、下载nodeJs并配置版本

系统管理》全局工具配置中配置nodeJs版本

2、jenkins中新增任务

3、进入设置页面

4、配置gitee地址及代码分支

5、选择nodeJs

6、执行shell

node -v
npm config set registry http://registry.npm.taobao.org
npm install 
rm -rf ./dist/*  
npm run build

7、推送ssh

export PROJECT_NAME=xiaoxx-user
cd /data/jenkins_home/workspace/$PROJECT_NAME
/usr/bin/docker stop $PROJECT_NAME
/usr/bin/docker rm $PROJECT_NAME
/usr/bin/docker rmi $PROJECT_NAME:v1
/usr/bin/docker build -t $PROJECT_NAME:v1 .

docker run --name $PROJECT_NAME -p 80:80 \
-d -it $PROJECT_NAME:v1

dockerfile文件

FROM nginx:alpine
RUN apk add tzdata &&  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
EXPOSE 80
COPY  /dist/. /usr/share/nginx/html/
COPY  /conf.d/test.conf /etc/nginx/conf.d/default.conf

nginx conf文件

   ## https  协议支持 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
    ## 443 | 80 端口配置 
server {
        # 请求头大小: 502 bad gateway 错误解决配置 start
    proxy_buffer_size 64k;
    proxy_buffers 32 32k;
    proxy_busy_buffers_size 128k;
    # 502 bad gateway 错误解决配置 end
 
    # 文件上传大小
    client_max_body_size 500m;
    # SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    # 将localhost修改为您证书绑定的域名,例如:www.example.com。
        listen 80;
        listen 443;                 
        server_name *****;    
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location ^~/api/ { 
           proxy_pass  http://172.19.7.**:9090/;
          }
        location /api/chat/addSse/ {
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        	# SSE 连接时的超时时间
        	proxy_read_timeout 86400s;
        	
			# 取消缓冲
            proxy_buffering off;

			# 关闭代理缓存
            proxy_cache off;
        	
        	# 禁用分块传输编码
        	#chunked_transfer_encoding off
        	
        	# 反向代理到 SSE 应用的地址和端口
            proxy_pass  http://172.19.7.**:9090/api/chat/addSse;
        }  
        location / {
            #root   html;
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri /index.html;

            # fix 304
            expires -1;
            if_modified_since off;
            add_header Last-Modified "";
            add_header Cache-Control no-cache;
            etag off;
        }
}

 附:自研AI助手(vue3+vite)欢迎体验    AI助手

 gitee地址 xiaoxx-user: 依托于通义千问的AI助手 (gitee.com) 

<think>好的,我现在需要帮用户解决如何通过Docker安装的Jenkins和GitLab来部署Vue.js项目的问题。首先,我得回忆一下用户提供的三个引用内容,看看有没有相关的配置步骤。引用1提到在Jenkins的系统设置里配置GitLab的URL和API Token,并测试连接,这可能涉及到Jenkins和GitLab的集成。引用2和引用3都提到了Docker相关的配置,比如.dockerignore文件,以及使用docker-compose来启动容器,还有Jenkins容器日志的查看。 用户的需求是使用Docker安装Jenkins和GitLab,然后部署Vue项目。首先,我应该分步骤来写,可能包括环境准备、安装DockerDocker Compose、配置GitLab和Jenkins容器、创建Vue项目,然后在Jenkins中设置流水线,最后自动化部署。 需要注意用户提供的引用中提到的关键点,比如在Jenkins系统管理里的GitLab配置,以及docker-compose的使用。引用3还提到用户组和权限的问题,比如jenkins用户组是994,可能需要处理权限问题,比如挂载目录的权限或者容器内用户的权限设置。 另外,用户提供的引用中有提到Jenkins Job的配置,可能需要创建一个Pipeline项目,拉取GitLab中的代码,然后执行构建命令,比如npm install和npm run build,之后将构建产物部署到指定目录。可能需要使用到Node.js环境,所以需要考虑在Jenkins容器中安装Node或者使用带有Node环境的镜像。 可能还需要处理Docker网络的问题,确保Jenkins容器能够访问GitLab容器,或者它们在同一网络中。同时,SSH密钥的配置也很重要,让Jenkins能够从GitLab拉取代码,这可能需要将SSH密钥添加到Jenkins的凭证中。 接下来,我需要整理这些步骤,按照逻辑顺序排列,确保每一步都清晰,并且引用提供的参考信息。比如,在配置GitLab部分时,引用1的步骤,输入URL和API Token,测试连接。在Docker Compose配置部分,引用3提到了docker-compose up -d和查看日志的方法。 还要注意用户可能遇到的常见问题,比如权限错误,如何查看容器日志,如何处理构建后的文件部署,比如使用rsync或者直接复制到Nginx的目录中。此外,自动化触发构建可能需要配置GitLab的Webhook,引用1中的API Token可能用于此。 最后,生成相关问题,可能需要考虑优化部署流程,处理依赖,或者错误排查等。比如如何优化Jenkins构建速度,如何处理构建缓存,或者如何配置HTTPS等。</think>### 分步配置教程 #### 1. 环境准备 - 安装 DockerDocker Compose 确保服务器已安装 DockerDocker Compose。若未安装,执行以下命令: ```bash curl -fsSL https://get.docker.com | bash -s docker sudo systemctl enable docker && sudo systemctl start docker sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` #### 2. 配置 GitLab 容器 - 创建 `docker-compose.yml` 文件,定义 GitLab 服务: ```yaml version: '3' services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always ports: - "80:80" - "443:443" - "22:22" volumes: - ./gitlab/config:/etc/gitlab - ./gitlab/logs:/var/log/gitlab - ./gitlab/data:/var/opt/gitlab ``` 通过 `docker-compose up -d` 启动容器,使用 `docker logs gitlab` 查看日志[^3]。 #### 3. 配置 Jenkins 容器 - 修改 `docker-compose.yml`,添加 Jenkins 服务: ```yaml jenkins: image: jenkins/jenkins:lts container_name: jenkins restart: always ports: - "8080:8080" - "50000:50000" volumes: - ./jenkins:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock # 允许Jenkins调用Docker user: "jenkins:994" # 确保权限与宿主机Docker组匹配[^3] ``` 启动后访问 `http://服务器IP:8080`,根据提示完成初始化。 #### 4. 集成 Jenkins 与 GitLab - **配置 GitLab API Token** 在 GitLab 中生成 API Token(`Profile -> Access Tokens`),进入 Jenkins 的 `系统管理 -> 系统设置 -> GitLab`,填写 URL 和 Token 并测试连接[^1]。 - **添加 SSH 密钥** 将 Jenkins 容器的公钥(位于 `/var/jenkins_home/.ssh/id_rsa.pub`)添加到 GitLab 的 Deploy Keys 中,确保代码拉取权限。 #### 5. 创建 Vue.js 项目 - 在 GitLab 中创建新项目,推送 Vue.js 代码至仓库。确保项目包含: - `Dockerfile`:定义构建镜像步骤 - `.dockerignore`:排除 `node_modules` 等无关文件[^2] #### 6. 配置 Jenkins 流水线 1. **新建 Pipeline 任务** 选择 `新建任务 -> Pipeline`,在 **Pipeline** 部分配置 Git 仓库地址(如 `git@gitlab.example.com:group/project.git`)。 2. **编写 Jenkinsfile** 在项目根目录添加 `Jenkinsfile`,示例内容: ```groovy pipeline { agent any stages { stage('Build') { steps { sh 'npm install' sh 'npm run build' } } stage('Deploy') { steps { sh 'docker build -t vue-app .' sh 'docker stop vue-app || true && docker rm vue-app || true' sh 'docker run -d -p 80:80 --name vue-app vue-app' } } } } ``` 3. **触发自动化构建** 在 GitLab 项目设置中配置 Webhook(`Settings -> Webhooks`),URL 格式为 `http://JenkinsIP:8080/project/任务名`。 #### 7. 验证部署 - 访问 `http://服务器IP`,确认 Vue 应用正常运行。若需排查问题,使用 `docker logs jenkins` 或查看 Jenkins 控制台输出[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值