From c23b2201cd434a1c668bc817e73c3cbf9c8e7910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=97=B4=E8=B4=A7?= <252048765@qq.com> Date: Mon, 16 Sep 2024 07:44:28 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=A1=B9=E7=9B=AE=E5=AE=9A=E5=88=B6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E3=80=91jenkins=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E9=83=A8=E7=BD=B2=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.dev | 6 +++--- Dockerfile | 16 ++++++++++++++++ Jenkinsfile | 45 +++++++++++++++++++++++++++++++++++++++++++++ nginx.conf | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 Dockerfile create mode 100644 Jenkinsfile create mode 100644 nginx.conf diff --git a/.env.dev b/.env.dev index 232f1c6b7..7fa537c68 100644 --- a/.env.dev +++ b/.env.dev @@ -4,12 +4,12 @@ NODE_ENV=production VITE_DEV=true # 请求路径 -VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn' +VITE_BASE_URL='http://192.168.10.207' # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 VITE_UPLOAD_TYPE=server # 上传路径 -VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload' +VITE_UPLOAD_URL='http://192.168.10.207/admin-api/infra/file/upload' # 接口地址 VITE_API_URL=/admin-api @@ -30,7 +30,7 @@ VITE_BASE_PATH=/ VITE_OUT_DIR=dist # 商城H5会员端域名 -VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn' +VITE_MALL_H5_DOMAIN='http://192.168.10.207' # 验证码的开关 VITE_APP_CAPTCHA_ENABLE=true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..2da1559e3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM 192.168.10.206:8888/library/nginx:1.26.2 + +ENV TZ=Asia/Shanghai + +#创建app目录 +WORKDIR /app + +COPY ./dist/ /app + +#COPY ./ssl/* /etc/nginx + +ADD ./nginx.conf /etc/nginx/nginx.conf + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..6fd796bfb --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,45 @@ +pipeline { + agent any + + environment { + NAME = "specialty-ui" + VERSION = "latest" + ENVTYPE = "DEV" + DEVIMGURL = "192.168.10.206:8888" + DEVVERSION = "dev" + } + + stages { + stage('拉取代码') { + steps { + echo "${ref}分支开始构建" + checkout scmGit(branches: [[name: "${ref}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/jianghewangluo/specialty.git']]) + } + } + + stage('编译代码') { + steps { + sh "npm config set registry https://registry.npmmirror.com" + sh "npm install -g pnpm" + sh "pnpm install" + sh "npm run build:dev" + } + } + + stage('打包') { + steps { + withCredentials([usernamePassword(credentialsId: 'harbor', passwordVariable: 'password', usernameVariable: 'username')]) { + sh "docker build -t ${DEVIMGURL}/library/${NAME}:${VERSION} ./" + sh "echo ${password} | docker login -u ${username} --password-stdin http://${DEVIMGURL}" + sh "docker push ${DEVIMGURL}/library/${NAME}:${VERSION}" + } + } + } + + stage('启动项目') { + steps { + sshPublisher(publishers: [sshPublisherDesc(configName: 'saas', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sh /home/start.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) + } + } + } +} \ No newline at end of file diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 000000000..2075a2c68 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,48 @@ +user nginx; +worker_processes 1; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; +events { + worker_connections 1024; +} +http { + include /etc/nginx/mime.types; + client_max_body_size 0; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + keepalive_timeout 65; + + server { + listen 80; + server_name 192.168.10.207; ## 重要!!!修改成你的外网 IP/域名 + + location / { ## 前端项目 + root /app; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location /admin-api/ { ## 后端项目 - 管理后台 + proxy_pass http://specialty:48080/admin-api/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location /app-api/ { ## 后端项目 - 用户 App + add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; + add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; + proxy_pass http://specialty:48080/app-api/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } +} \ No newline at end of file