成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

服務未就緒,應用搶跑?用 wait-for[-it]穩住啟動節奏

開發 開發工具
wait-for 是一個輕量、實用、適用于各種自動化場景的小工具。它幫助我們解決了依賴服務未就緒導致主服務異常啟動的問題,是 CI/CD、容器編排中不可或缺的穩態工具之一。

在實際的 DevOps 和 CI/CD 流程中,容器或服務的啟動往往并非孤立完成,而是依賴于數據庫、緩存、API 網關等其他服務。如果這些依賴尚未準備好,直接啟動主應用將面臨連接失敗、初始化出錯等風險。

為了更可靠地控制服務的啟動順序,本文推薦一個輕量級工具 wait-for。該工具專為容器或腳本環境中等待某個端口服務可用而設計,適用于絕大多數現代化部署流程。

工具簡介

wait-for 是一個用純 sh 編寫的腳本工具,無需額外依賴,可直接在任何類 Unix 系統中使用。它通過輪詢目標 host:port 的方式,等待服務監聽端口成功打開,從而判斷服務已經就緒。

主要特性包括:

  • ? 純 shell 編寫,無需編譯或安裝
  • ? 支持超時設置
  • ? 支持目標服務就緒后自動執行其他命令
  • ? 易于集成到 Dockerfile、Kubernetes、CI/CD 等環境中

安裝與使用

無需下載腳本文件,直接使用 wget 或 curl 管道即可:

wget -qO- https://raw.githubusercontent.com/eficode/wait-for/v2.2.3/wait-for | sh -s -- host:port -- command

或使用 curl:

curl -s https://raw.githubusercontent.com/eficode/wait-for/v2.2.3/wait-for | sh -s -- host:port -- command

其中 -- 是一個參數分隔符,表示后面的內容是待執行的命令。

使用場景示例

1. 容器啟動前等待數據庫就緒

在 docker-compose 項目中,某服務依賴于 MySQL,可以在入口腳本中添加:

wait-for db:3306 -- ./start-server.sh

該命令會阻塞,直到名為 db 的容器監聽了 3306 端口才會繼續執行 start-server.sh。

2. CI/CD 流水線中等待依賴服務上線

在 GitLab CI 或 Jenkinsfile 腳本中:

wait-for redis.example.com:6379 -- ./run-tests.sh

測試任務會等待 Redis 服務可用之后再運行,避免測試中出現連接異常。

3. Kubernetes 中作為 InitContainer 使用

在 Kubernetes Pod 的 initContainers 中使用 wait-for 等待另一個服務:

initContainers:
  - name: wait-for-api
    image: busybox
    command: ['sh', '-c', 'wget -qO- https://raw.githubusercontent.com/eficode/wait-for/v2.2.3/wait-for | sh -s -- api-service:8080']

這樣可以確保主容器在 API 服務就緒之后再啟動。

4. 指定超時時間,避免永久阻塞
wait-for -t 30 api.example.com:443 -- echo "API ready"

如果 30 秒內目標端口未開放,腳本將返回失敗狀態,方便腳本捕捉。

參數說明

參數

說明

-t SECONDS

最多等待多少秒,默認不超時

--strict

嚴格模式:等待成功后執行命令,如果命令失敗則整體失敗

--quiet

安靜模式:不輸出等待過程的日志信息

host:port

需要等待的主機和端口組合

-- command

等待成功后執行的命令

工作原理

wait-for 的實現非常簡單,其原理大致如下:

  1. 持續嘗試連接指定的 host:port
  2. 連接成功即認為服務已就緒
  3. 如果指定了后續命令,繼續執行;否則退出

其內部使用 nc(netcat)或 Bash 自帶的 /dev/tcp 接口進行端口探測,無需安裝任何第三方依賴。

使用建議

  • 建議在使用時明確設置超時時間(-t 參數),避免阻塞流程。
  • 可與 shell 腳本、Dockerfile、Kubernetes 資源配置靈活結合。

總結

wait-for 是一個輕量、實用、適用于各種自動化場景的小工具。它幫助我們解決了依賴服務未就緒導致主服務異常啟動的問題,是 CI/CD、容器編排中不可或缺的穩態工具之一。

如果你在構建自動化流程時,曾遇到“服務還沒起來就被訪問”的尷尬,不妨試試 wait-for,讓你的部署流程更加穩定、優雅、可控。

責任編輯:武曉燕 來源: 云原生生態圈
相關推薦

2015-07-16 20:33:52

浪潮云云服務

2023-02-27 07:15:26

2013-07-24 09:29:35

云就緒應用DevOps工具分布式網絡

2019-01-08 11:37:08

區塊鏈銀行金融

2009-10-21 09:01:41

Windows 7客戶服務

2012-12-05 09:30:25

SAP HANA大數據

2012-08-10 11:00:10

4GLTE

2022-05-19 07:01:34

架構

2020-05-22 13:59:13

SSD內存DDR4

2015-11-09 17:28:12

戴爾云計算

2015-11-09 19:03:04

戴爾云計算

2020-09-10 13:51:48

Kubernetes云原生容器

2019-02-19 09:07:42

GAN生成對抗網絡神經網絡

2009-10-13 17:53:58

Windows 7微軟OEM

2021-07-06 06:58:26

Windows 11操作系統微軟

2016-01-11 09:23:00

Saas云計算

2015-11-18 21:39:53

戴爾

2011-11-25 09:56:16

H3C

2009-03-19 18:03:23

服務器四核雙核

2011-06-17 10:29:04

Nodejavascript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日夜夜视频 | 亚洲欧美中文日韩在线v日本 | 日本三级播放 | 久久精品在线播放 | 91精品国产高清一区二区三区 | 久热爱 | 欧美黄色免费网站 | 亚洲成人免费视频 | 国产一区在线免费观看 | 午夜精品在线 | 日韩中出| 一区二区三区精品视频 | 欧美在线一区二区三区 | 欧美性视频在线播放 | 成人在线中文字幕 | 精品国产伦一区二区三区观看体验 | 成人一级毛片 | 国产日韩一区二区三区 | 国产午夜亚洲精品不卡 | 国产91亚洲精品一区二区三区 | 亚洲色图在线观看 | 999精品网 | 免费观看成人性生生活片 | 欧美一区二区三区视频 | 日韩欧美一区二区在线播放 | 久久精品亚洲 | 99精品国产一区二区青青牛奶 | 亚洲vs天堂 | 日韩精品视频在线 | 在线播放中文字幕 | www.4hu影院 | a级毛片基地 | 天堂网色 | 黄网站色大毛片 | 日韩欧美在线一区二区 | 日韩一区二区三区精品 | 欧美一区二区三区高清视频 | 国产91在线 | 亚洲 | 国产精品无码久久久久 | 日本免费视频在线观看 | 黑人粗黑大躁护士 |