From 800a5da5b15de79fa009a254de198237665b8cc1 Mon Sep 17 00:00:00 2001 From: qihai Date: Mon, 9 Jun 2025 15:50:28 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E6=B7=BB=E5=8A=A0=20Drone=20CI=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=92=8C=20Docker=20?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 .drone.yml 文件,配置 Drone CI 流水线 - 添加 docker.sh脚本,用于构建和启动 Docker 容器 - 创建 Dockerfile,定义 NGINX基础镜像和应用部署配置 --- .drone.yml | 42 ++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 8 ++++++++ docker.sh | 20 ++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 .drone.yml create mode 100644 Dockerfile create mode 100644 docker.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..0e9d1f4 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,42 @@ +kind: pipeline # 定义对象类型,还有secret和signature两种类型 +type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型 +name: ${serverName} # 服务名 + +steps: + - name: package # 流水线名称 + image: node:18.20.4 + volumes: + - name: bulid-workspace + path: /home/app/web + - name: node_modules + path: /root/node_modules + commands: + - npm config set registry https://registry.npmmirror.com + # - npm config set registry https://registry.npm.taobao.org + # - SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass + - npm install + - npm run build:dev + - cp -r ./dist /home/app/web/dist + - cp Dockerfile /home/app/web/Dockerfile + - cp docker.sh /home/app/web/docker.sh + - name: build-start + image: appleboy/drone-ssh # SSH工具镜像 + settings: + host: 192.168.0.110 # 远程连接地址 + username: root # 远程连接账号 + password: dy20090625 # 远程连接密码 + # from_secret: dy20090625 # 从Secret中读取SSH密码 + port: 22 # 远程连接端口 + command_timeout: 5m # 远程执行命令超时时间 + script: + - cd /home/app/web # 进入宿主机构建目录 + - chmod +x docker.sh # 更改为可执行脚本 + - ./docker.sh # 运行脚本打包应用镜像并运行 + +volumes: # 定义流水线挂载目录,用于共享数据 + - name: bulid-workspace + host: + path: /home/app/web # 从宿主机中挂载的目录 + - name: node_modules + host: + path: /root/node_modules diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d3cc19c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +# 设置基础镜像 +FROM nginx:latest +# 定义作者 +MAINTAINER chinasoft +# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面 +COPY dist/ /usr/share/nginx/html/ +EXPOSE ${innerPort} +ENTRYPOINT nginx -g "daemon off;" diff --git a/docker.sh b/docker.sh new file mode 100644 index 0000000..be4931a --- /dev/null +++ b/docker.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# 定义应用组名 +group_name='${serverGroup}' +# 定义应用名称,建议与服务名保持一致 +app_name='${serverName}' +app_version="1.0" +echo ${app_name} +echo '----copy app----' +docker stop ${app_name} +echo '----stop container----' +docker rm ${app_name} +echo '----rm container----' +docker rmi ${group_name}/${app_name}:${app_version} +echo '----rm image----' +# 打包编译docker镜像 +docker build -t ${group_name}/${app_name}:${app_version} . +#构建docker应用 +docker run -p ${outerPort}:${innerPort} --name ${app_name} \ +-e TZ="Asia/Shanghai" \ +-d ${group_name}/${app_name}:${app_version}