国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于如何使用dockerfile -d 啟動webman的那些事

今天起床在群里看到有人討論docker里面是否要使用supervisord守護進程來啟動webman。

我一想,webman不是自帶來守護進程模式嗎?workerman里面采用的是Master進程監(jiān)控子進程的模式啟動的,因此是支持守護進程模式的。如果還要依賴第三方來進行守護那么自帶的守護模式 -d 是不是就沒有存在的意義了。

看了群友的討論才知道,他們是使用了 -d 之后docker容器就退出了,其實這是一個docker的問題不是webman的問題。為什么會出現(xiàn)webman啟動的時候加了 -d 會導(dǎo)致容器退出,如果出現(xiàn)這樣的問題都是對 docker 不熟悉的開發(fā)者才會出現(xiàn)這種問題。

了解一下 docker 為什么會出現(xiàn)這種問題就能去解決這個問題了,在docker啟動一個容器,如果發(fā)現(xiàn)沒有前置進程就會終止容器,認(rèn)為你這個容器沒有存在的必要了。 既然知道問題是不是可以加一個前置進程解決這個問題?

答案是顯而易見的,比如很多人教部署nginx的時候都選擇了 daemon off 這種模式啟動,這種模式可以把nginx當(dāng)作前置進程來保持容器一直運行,但是這樣也存在一個問題,由于nginx不是守護進程啟動的,當(dāng)nginx出現(xiàn)問題掛掉的時候docker容器也會跟著退出,從而不能為用戶提供服務(wù)。

我們現(xiàn)在知道問題的緣由,也知道了這樣執(zhí)行會導(dǎo)致的問題,那么我們現(xiàn)在就來解決掉它

FROM php:8.1-alpine

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
      && apk update --no-cache \
      && docker-php-source extract \
      && docker-php-ext-install -j$(nproc) pcntl \
      && docker-php-ext-enable opcache pcntl\
    curl unzip \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

COPY . /app

WORKDIR /app

VOLUME /app

RUN composer install

EXPOSE 8787

CMD ["sh","-c","php start.php start -d && tail -f /dev/null"]

這是我用來測試的一個Dockerfile文件,我們主要看 CMD 這里采用了 shell 命令 正常的執(zhí)行一個 php 啟動 webman 的命令并且使用了 -d 進行守護進程啟動,那么如何保持容器不退出呢?重點就在于 tail -f /dev/null 它會一直阻塞在等待,這樣就能實現(xiàn)webman的守護進程又能保持容器不會退出。

1597 8 12
8個評論

軟飯工程師

流弊

  • 暫無評論
10bang

感謝分享

  • 暫無評論
xpwsgg

厲害?(???????)?

  • 暫無評論
白鵠

CMD 里面的-d 可以去掉了 你本來容器外-d 守護進程了 里面就沒必要-d 運行了

admin

CMD ["sh","-c","php start.php start -d && tail -f /dev/null"]

為什么不直接

CMD ["sh","-c","php start.php start -d && sh"]

并且 attache的時候就能直接進入shell了。

docker容器只要有一個阻塞式的指令就能防止容器exit(0)了

admin

截圖
CMD ["sh","-c","php start.php start -d && sh"]

可以 啟動 start.php start -d并且 最后永遠(yuǎn)在sh 中運行,只要你不再sh中輸入exit,容器不會停止

截圖

admin

截圖

抱歉CMD我寫錯了,你這樣

CMD sh -c "php /app/start.php start -d && sh"
  • 暫無評論
wzj177

好分享。這個問題想到了前兩年,公司老大讓我用webman寫一個利用sonarqube的hock來檢測項目代碼質(zhì)量的工作,做完了,讓我用docker,最后我也是用守護進程啟動。最后,老大也給了我指點,記得大致是 很多面試者都會在簡歷寫精通docker,但是很多沒真正弄過docker的都不知道為啥不能守護進程。我也記不到當(dāng)時說的內(nèi)容了,但記住了需要一個進程掛起

  • 暫無評論

ngrok.cc內(nèi)網(wǎng)穿透

914
積分
0
獲贊數(shù)
0
粉絲數(shù)
2021-03-06 加入
??