wu529778790/shenzjd-skills

docker-build-deploy

Use when containerizing a Node.js app and setting up GitHub Actions CI/CD to build, push to GHCR, and deploy via SSH.

ソースを見る
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Docker Build & Deploy

一键生成 Docker 构建 + 推送到 GHCR + 部署到服务器的 GitHub Actions 工作流。

Overview

自动生成完整的 Docker CI/CD 工作流:构建镜像 → 推送到 GHCR → SSH 部署到服务器。包含优化的 Dockerfile(多阶段构建、非 root、健康检查)和 GitHub Actions 工作流模板。

When to Use

  • User wants to containerize a project and deploy it
  • User needs GitHub Actions to automatically build Docker images
  • User mentions Docker, GHCR, container deployment, or CI/CD
  • User inputs /docker-build-deploy
  • User wants to set up continuous deployment pipeline
  • User wants to push images to a container registry
  • User wants to automate deployment to a remote server via SSH
  • User wants to optimize existing Dockerfile with multi-stage builds
  • User wants to add health checks to container deployment

When NOT to Use:

  • User only wants to write a Dockerfile
  • User deploys with Kubernetes (different workflow - consider kubectl or Helm)
  • User doesn't use GitHub Actions (consider GitLab CI, CircleCI, etc.)
  • User wants to deploy to AWS ECS/EKS, Google Cloud Run, or Azure Container Instances (different workflows)

Core Pattern

Step 1: 收集信息

交互式询问:port(容器内端口,默认 3000)、host_port(对外暴露端口,默认同 port)、env_file(服务器 env 路径,可选)。

智能检测:有 package.json → Node.js(当前唯一支持的项目类型)。已有 Dockerfile 则跳过生成。

Step 2: 生成 Dockerfile(如需要)

生成优化的 Node.js Dockerfile:多阶段构建、非 root 用户、健康检查。模板见 templates/Dockerfile.nodejs

Step 3: 生成 Workflow

templates/docker-deploy.yml 生成工作流,替换 {{PORT}}(容器端口)、{{HOST_PORT}}(对外端口)和 {{ENV_FILE}} 变量。

build-and-push job: 登录 GHCR → Buildx 构建 → 推送(tag: latest + sha)→ GHA 缓存

deploy job: SSH 连接 → 拉取镜像 → 停旧容器 → 启新容器(支持 env 文件)→ 清理旧镜像

Step 4: 提示配置 Secrets

告知用户需在 GitHub Settings → Secrets 配置:DEPLOY_HOSTDEPLOY_USERDEPLOY_SSH_KEY(服务器私钥)。

安全性:使用 SSH key 而非密码(密码登录有爆破风险,且明文存于 CI)。若服务器只支持密码,可改用 password: ${{ secrets.DEPLOY_PASSWORD }},但不推荐。

Quick Reference

bash
/docker-build-deploy
/docker-build-deploy --port 8080
/docker-build-deploy --port 8080 --env-file /opt/app/.env
参数说明默认值
--port容器内应用端口3000
--host-port服务器对外暴露端口--port
--env-file服务器 env 文件路径

Common Mistakes

错误正确做法原因
latest 单 tag同时打 latest + ${{ github.sha }}方便回滚
不设置 packages: write 权限声明 permissions: packages: writeGHCR 推送需要
deploy 不检查容器是否存在docker stop + docker rm避免端口冲突
不清理旧镜像部署后 docker image prune -f磁盘空间
Dockerfile 用 root 运行添加 USER node 或非 root 用户容器安全最佳实践
Secrets 硬编码在 workflow 中使用 ${{ secrets.XXX }} 引用密钥泄露风险
不设置 Docker BuildKit 缓存配置 cache-from / cache-to using GitHub Actions cache每次全量构建太慢
不处理构建失败的回滚部署后验证健康检查失败部署可能上线错误版本
用密码 SSH 部署使用 SSH key(DEPLOY_SSH_KEY密码爆破风险高
平台声明与服务器架构不符按服务器架构声明 linux/amd64linux/arm64;多平台构建时写 linux/amd64,linux/arm64目标架构不匹配导致运行失败
同じリポジトリから

関連する Skills

すべての Skills
wu529778790
コミュニティ

db-migration-helper

Use when generating database migration SQL from model or schema changes — compares current vs desired schema, detects diffs, outputs reversible safe migrations.

導入数
1
GitHub Stars
0
更新日
8月16日
wu529778790
コミュニティ

dependency-audit

Use when auditing project dependencies for security vulnerabilities, outdated packages, or license compliance across npm/yarn/pnpm, pip, go, and cargo.

導入数
1
GitHub Stars
0
更新日
8月16日
wu529778790
コミュニティ

git-hooks-setup

Use when setting up git hooks (pre-commit, commit-msg, pre-push) with husky or native hooks for linting, formatting, commit conventions, and secret scanning.

導入数
1
GitHub Stars
0
更新日
8月16日
wu529778790
コミュニティ

github-figure-bed

Upload images to any GitHub repo as a figure bed and get CDN/markdown links (jsdelivr/jsdmirror/raw). One-time setup.sh guides gh login, auto-detects the owner, creates the default repo (img.shenzjd.com) if missing, and syncs config with the img.shenzjd.com web app via the repo's .imgx-config/config.json — upload with zero manual configuration. Use for uploading images to GitHub, generating CDN links, deleting/listing hosted images, or setting up a figure bed. Keywords: github figure bed, image host, CDN link, jsdelivr, jsdmirror, upload image to GitHub, 图床, 上传图片, CDN 链接, 初始化图床.

導入数
1
GitHub Stars
0
更新日
8月16日