Skip to content

Latest commit

 

History

History
85 lines (60 loc) · 2.2 KB

File metadata and controls

85 lines (60 loc) · 2.2 KB

CI/CD 自动构建与发布指南

本项目使用 GitHub Actions 自动构建 Docker 镜像并推送到 Docker Hub。

一次性配置 GitHub Secrets

进入仓库 Settings → Secrets and variables → Actions,添加以下两个 Secret:

Secret 名称
DOCKERHUB_USERNAME 你的 Docker Hub 用户名
DOCKERHUB_TOKEN Docker Hub 的 Access Token(不是密码)

获取 Access Token:登录 hub.docker.com → Account Settings → Security → New Access Token


自动 Tag 规则

触发方式 生成的镜像 Tag
推送到 main 分支 yourname/webssh:main + yourname/webssh:latest
推送 v1.2.3 tag yourname/webssh:1.2.3 + yourname/webssh:1.2 + yourname/webssh:latest

发版流程

# 日常开发 → 自动打 :latest
git push origin main

# 正式发版 → 打版本号 tag
git tag v1.0.0
git push origin v1.0.0

镜像说明

构建出的镜像不包含数据库,数据库通过环境变量在运行时注入。

方式一:docker run

docker run -d \
  --name webssh-app \
  -p 3000:3000 \
  -e DB_HOST=your-mysql-host \
  -e DB_PORT=3306 \
  -e DB_USER=webssh_user \
  -e DB_PASSWORD=your-db-password \
  -e DB_NAME=webssh \
  -e JWT_SECRET=your-jwt-secret \
  -e ENCRYPTION_KEY=your-32-byte-encryption-key \
  dalaolala/webssh:latest

方式二:docker-compose(推荐)

# 初始化数据库(只需一次)
mysql -u root -p < install.sql

# 启动应用
docker-compose -f docker-compose.external-db.yml up -d

Important

ENCRYPTION_KEY 一旦设置后不能更改,否则已保存的服务器密码将无法解密。

生成随机 Key:node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"


优化说明

特性 说明
构建缓存 cache-from/to: type=gha 利用 GitHub Actions 缓存 Docker layer,二次构建大幅提速(npm install 层不重复执行)
多架构 linux/amd64,linux/arm64 同时支持 x86 服务器和 ARM(树莓派、Apple Silicon)
Access Token 比密码更安全,可随时在 Docker Hub 吊销

have a test