欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker容器依賴link連接按順序啟動方式

 更新時(shí)間:2023年05月18日 14:20:01   作者:神神的蝸牛  
這篇文章主要介紹了Docker容器依賴link連接按順序啟動方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Docker 中的容器一般都會遇到相互之間服務(wù)依賴的問題,通過 --link 指定一個(gè)或多個(gè)依賴容器服務(wù),但啟動的時(shí)候卻因?yàn)槿萜鲀?nèi)的服務(wù)啟動的延時(shí)不確定,并不能保證所有容器都能成功啟動,于是需要強(qiáng)制按容器內(nèi)的服務(wù)順序來啟動容器。

需要一個(gè)工具

先下載這個(gè)腳本, 然后根據(jù)項(xiàng)目中容器的服務(wù)依賴順序配置就可以了, 唯一的問題就是服務(wù)都需要有可訪問的端口.

舉個(gè)栗子

nginx 依賴 php-fpm 依賴 redis | mysql

那么就倒序啟動, web_up.sh

wait_for_it=/zzstore/my-tools/wait-for-it/wait-for-it.sh
docker container start my-mysql-8.0 && \
$wait_for_it -s -t 15 localhost:16033 -- echo 'mysql is up ~'       && docker container start redis-6.2-19736 && \
$wait_for_it -s -t 15 localhost:19736 -- echo 'redis-19736 is up ~' && docker container start redis-6.2-19740 && \
$wait_for_it -s -t 15 localhost:19740 -- echo 'redis-19740 is up ~' && docker container start my-php-8.0-fpm  && \
$wait_for_it -s -t 15 localhost:9080  -- echo 'php-fpm is up ~'     && docker container start my-nginx-1.20   && \
$wait_for_it -s -t 15 localhost:80    -- echo 'nginx is up ~'
  • -s: 表示嚴(yán)格模式, 若檢測的服務(wù)在
  • -t: xx秒 內(nèi)沒有啟動, 則終止后續(xù)所有命令.

這個(gè)腳本是在宿主機(jī)上運(yùn)行的, 監(jiān)聽的端口也都是宿主機(jī)上的端口, 如: 16033 映射 mysql 容器內(nèi) 3306

也可以用來監(jiān)聽 Docker 服務(wù)的啟動狀態(tài):

wait_for_it=/zzstore/my-tools/wait-for-it/wait-for-it.sh
$wait_for_it -s -t 60 localhost:2375  -- echo 'docker is up ~'      && docker container start my-mysql-8.0    && \
$wait_for_it -s -t 15 localhost:16033 -- echo 'mysql is up ~'       && docker container start redis-6.2-19736 && \
$wait_for_it -s -t 15 localhost:19736 -- echo 'redis-19736 is up ~' && docker container start redis-6.2-19740 && \
$wait_for_it -s -t 15 localhost:19740 -- echo 'redis-19740 is up ~' && docker container start my-php-8.0-fpm  && \
$wait_for_it -s -t 15 localhost:9080  -- echo 'php-fpm is up ~'     && docker container start my-nginx-1.20   && \
$wait_for_it -s -t 15 localhost:80    -- echo 'nginx is up ~'

等 Dockerd 服務(wù)啟動后自動按服務(wù)順序啟動所有容器.

至于 -t 參數(shù)的時(shí)長可以在服務(wù)器上先測試一下根據(jù)實(shí)際情況再調(diào)整下.

全部正常成功啟動的效果圖

Docker多容器link連接后按順序啟動容器


上面的啟動命令每個(gè) -- 后的所有命令都是一個(gè)整體, 前面沒有執(zhí)行成功后面都不會觸發(fā).

再來測試下啟動失敗的情況

當(dāng)前容器全部已啟動的狀態(tài), 我們關(guān)閉其中一個(gè)依賴的服務(wù) redis-6.2-19740 然后再執(zhí)行腳本.

docker container stop redis-6.2-19740
wait_for_it=/zzstore/my-tools/wait-for-it/wait-for-it.sh
$wait_for_it -s -t 60 localhost:2375  -- echo 'docker is up ~'      && docker container start my-mysql-8.0    && \
$wait_for_it -s -t 15 localhost:16033 -- echo 'mysql is up ~'       && docker container start redis-6.2-19736 && \
#$wait_for_it -s -t 15 localhost:19736 -- echo 'redis-19736 is up ~' && docker container start redis-6.2-19740 && \
$wait_for_it -s -t 15 localhost:19740 -- echo 'redis-19740 is up ~' && docker container start my-php-8.0-fpm  && \
$wait_for_it -s -t 15 localhost:9080  -- echo 'php-fpm is up ~'     && docker container start my-nginx-1.20   && \
$wait_for_it -s -t 15 localhost:80    -- echo 'nginx is up ~'

wait-for-it.sh: timeout occurred after waiting 15 seconds for localhost:19740
wait-for-it.sh: strict mode, refusing to execute subprocess

由于 redis-6.2-19740 沒有啟動, 而且使用了 -sstrict mode 因此后續(xù)存在依賴的命令全都不會執(zhí)行了.

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker搭建logstash和使用方法詳解

    docker搭建logstash和使用方法詳解

    這篇文章主要介紹了docker搭建logstash和使用方法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 三者區(qū)別解析

    Docker、Podman 和 Containerd 是三種流行的容器工具,它們都用于容器的創(chuàng)建、管理和運(yùn)行,但它們在設(shè)計(jì)理念、功能和使用場景上有一些差異,這篇文章主要介紹了Docker、Podman 和 Containerd 三者區(qū)別,需要的朋友可以參考下
    2025-02-02
  • 通過Docker創(chuàng)建CentOS容器的實(shí)現(xiàn)步驟

    通過Docker創(chuàng)建CentOS容器的實(shí)現(xiàn)步驟

    本文主要介紹了Docker創(chuàng)建CentOS容器,使用文內(nèi)的腳本可以快速創(chuàng)建CentOS 7.8虛擬系統(tǒng)集群,并通過SSH(Secure Shell)遠(yuǎn)程工具連接,感興趣的可以了解一下
    2021-11-11
  • 手工制作docker鏡像-包含多個(gè)服務(wù)ssh+nginx

    手工制作docker鏡像-包含多個(gè)服務(wù)ssh+nginx

    這篇文章主要介紹了手工制作docker鏡像-包含多個(gè)服務(wù)ssh+nginx,需要的朋友可以參考下
    2024-07-07
  • docker-compose安裝RabbitMQ及插件操作步驟

    docker-compose安裝RabbitMQ及插件操作步驟

    這篇文章主要為大家介紹了docker-compose安裝RabbitMQ及插件操作步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法

    docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法

    這篇文章主要介紹了docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • docker 實(shí)現(xiàn)容器與宿主機(jī)無縫調(diào)用shell命令

    docker 實(shí)現(xiàn)容器與宿主機(jī)無縫調(diào)用shell命令

    這篇文章主要介紹了docker 實(shí)現(xiàn)容器與宿主機(jī)無縫調(diào)用shell命令的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨想過來看看吧
    2021-03-03
  • 詳解docker-compose.yml文件常用模版命令

    詳解docker-compose.yml文件常用模版命令

    這篇文章主要介紹了docker-compose.yml文件常用模版命令,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • Docker綁定端口后仍無法遠(yuǎn)程直接訪問的解決方法

    Docker綁定端口后仍無法遠(yuǎn)程直接訪問的解決方法

    在Docker中,如果容器的端口綁定錯(cuò)誤或只綁定到了容器的內(nèi)部IP地址,將導(dǎo)致外部主機(jī)無法訪問該端口,所以本文小編給大家介紹了Docker綁定端口后仍無法遠(yuǎn)程直接訪問的解決方法,需要的朋友可以參考下
    2024-09-09
  • 利用Docker部署PostgreSQL 12.4主從方式

    利用Docker部署PostgreSQL 12.4主從方式

    這篇文章主要介紹了利用Docker部署PostgreSQL 12.4主從方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論