大家好,我是凌覽。
如果本文能給你提供啟發或幫助,歡迎動動手指,一鍵三連(按讚、留言、轉發),給我一些支持和鼓勵,謝謝。
Jenkins 是個開源的持續整合工具,介面好用,操作也簡單,在專案開發裡用得特別多。能自動化搞建置、測試、部署,確實挺厲害的。
但如果你是一人公司,不建議用,原因有二:
所以我的建議很簡單:除非你團隊多人、流水線複雜到非 Jenkins 不可,否則別碰它。一人公司的核心是活下去、跑得快,不是伺候工具。
那要怎麼部署呢,我是這樣做的——用本地自動化腳本取代 Jenkins
首先裝個 Docker,把專案 Docker 化。
比如去浮水印下載鴨,就是用 Docker 部署的。前、後端全部打包進一個映像檔。
Dockerfile 檔案:
docker 代碼解讀複製代碼FROM node:24-slim
ENV TZ=Asia/Shanghai
WORKDIR /app
COPY package*.json ./
RUN npm config set registry https://registry.npmmirror.com/ && npm install --omit=dev --verbose
COPY .env ./
COPY server/ server/
COPY front-end/ front-end/
VOLUME ["/app/server/db", "/app/logs", "/app/ssl"]
EXPOSE 3000 3443
CMD ["npm", "start"]
然後執行打包命令:
bash 代碼解讀複製代碼docker buildx build --platform linux/amd64 -t 映像名稱 --push .
為什麼要指定 --platform linux/amd64?因為本機電腦一般是 Windows 或 macOS,線上伺服器跑的是 Linux。不指定的話,Docker 會按本機架構打包,傳到伺服器上就起不來了。
--push . 就是把映像推到遠端倉庫。遠端倉庫我用的是某雲的容器映像服務,個人版免費

至於怎麼設定推送到某雲的容器映像服務,官方文件寫得很清楚,照著走一遍就行。
推送成功後,你在任何一台機器上都能 docker pull xxx 把映像拉下來跑。
ssh2 是一個 Node.js 套件,專門用來連遠端伺服器。
連上之後,把 docker run 命令丟給它,它就能幫你在伺服器上跑起來。
jsx 代碼解讀複製代碼const { Client } = require('ssh2');
require('dotenv').config();
const cfg = {
ssh: {
host: process.env.DEPLOY_HOST,
port: 22,
username: 'root',
password: process.env.DEPLOY_PASSWORD,
},
docker: {
name: 'my-app',
image: 'registry.cn-hangzhou.aliyuncs.com/my-project/my-app:latest',
port: '80:3000',
},
};
const conn = new Client();
conn.on('ready', () => {
console.log('連上伺服器了,開始部署...');
conn.exec('docker pull ' + cfg.docker.image, (err, stream) => {
if (err) throw err;
stream.on('close', () => {
conn.exec('docker rm -f ' + cfg.docker.name + ' || true', () => {
conn.exec(
'docker run -d --name ' + cfg.docker.name +
' -p ' + cfg.docker.port +
' --restart=on-failure:4 ' +
cfg.docker.image,
() => {
console.log('部署完成!');
conn.end();
}
);
});
});
});
});
conn.connect(cfg.ssh);
上面這段是偽代碼,直接讓 AI 幫你寫就行,放這裡只是示範一下思路。
一個簡簡單單的自動化部署就成了,對一人公司來說完全夠用。
回過頭來看,這套方案其實就幹了兩件事:
沒有 Jenkins,不用搞什麼外掛、權限、流水線設定。一個 Dockerfile 加一個部署腳本,就把 CI/CD 的核心流程跑通了。
Jenkins 很好,但不是每個專案都需要它。如果你的團隊只有你一個人,專案也沒複雜到需要幾十個建置節點,那完全沒必要給自己加負擔。工具是拿來用的,不是拿來伺候的。
夠用就好。