本项目使用 GitHub Actions 自动构建 Docker 镜像并推送到 Docker Hub。
进入仓库 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 |
|---|---|
推送到 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 -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# 初始化数据库(只需一次)
mysql -u root -p < install.sql
# 启动应用
docker-compose -f docker-compose.external-db.yml up -dImportant
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