Files
bw-copilot-resources/resources/skills/synology-docker-deploy/SKILL.md

53 lines
2.1 KiB
Markdown

---
name: synology-docker-deploy
description: "Use when scaffolding Docker packaging and direct SSH deployment to a Synology host for a project that should be ready to run after setup."
argument-hint: "project-root=<path> service=<name> stack=<auto|node|python|generic> mode=<dry-run|apply> app-port=<port> container-port=<port>"
---
# Synology Docker Deploy
Use this skill when you want a portable, repeatable setup for Dockerizing a
project and deploying it to Synology over SSH without requiring a container
registry.
## Procedure
1. Confirm required inputs: `project-root`, `service`, `stack`, and deploy mode.
2. Run `resources/scripts/scaffold-synology-deploy.sh` to scaffold Docker and
deployment files directly into the target project.
3. Prefer `--mode dry-run` first to review planned changes before writing files.
4. For Node projects, let the scaffold update `package.json` scripts so deploy
commands are available immediately.
5. Copy `deploy/synology/deploy.env.example` to `deploy/synology/deploy.env`
and provide environment values.
6. Run `bash deploy/synology/deploy.sh --dry-run` from the target project to
verify inputs and planned remote actions.
7. Run `bash deploy/synology/deploy.sh` for actual deploy once dry-run output
looks correct.
8. Use `DEPLOY_TARGET=internal` or `DEPLOY_TARGET=external` to switch between
internal and external host routing without changing scripts.
## Outputs
- `Dockerfile` (stack-aware default)
- `.dockerignore`
- `deploy/synology/deploy.sh`
- `deploy/synology/deploy.env.example`
- `deploy/synology/compose.yaml`
- `deploy/synology/README.md`
- Optional `package.json` script updates for Node projects
## Do Not Use
- Do not use this workflow when the project requires a registry-only release
pipeline.
- Do not use this workflow when Kubernetes manifests are the primary deployment
target.
- Do not store secrets in generated files committed to source control.
## Notes
- This workflow is environment-variable-first and keeps secrets out of the repo.
- The generated deploy path uses direct `docker save` + `scp` + remote
`docker load` on Synology.