簡體   English   中英

使用 CMD 啟動 Docker PHP 服務器使主機在連接時收到“由對等方重置的連接”

[英]Starting Docker PHP server using CMD makes the host recieve "Connection reset by peer" upon connecting

我有一個 PHP 服務器,我需要沿着 Python 服務在 docker 映像中啟動它。 它們都需要在同一個圖像中。 起初,我按照我在網上找到的一個簡單指南編寫了 Dockerfile 來啟動 PHP 服務器,我想出了這個:

FROM php:7-apache
COPY ./www/ /var/www/html
WORKDIR /var/www/html
EXPOSE 70

然后,因為我需要在第二個容器上運行第三個服務,所以我創建了以下 docker-compose 文件:

version: '3.3'

services:
  web:
    build: .
    image: my-web
    ports:
      - "70:80"
  secondary-service:
    image: my-service
    ports:
      - "8888:8888"

僅使用它,網站就可以正常工作( web容器上缺少的服務除外)。 但是,如果我想在web容器中與 web 一起啟動服務,我需要從 bash 腳本手動啟動網站,因為 docker 只能有一個 CMD 條目。 這是我嘗試過的:

FROM php:7-apache
COPY ./www/ /var/www/html
RUN mkdir "/other_service"
COPY ./other_service /other_service
RUN apt-get update && bash /other_service/install_dependenci172.17.0.1es.sh
WORKDIR /var/www/html
EXPOSE 70
CMD ["bash", "/var/www/html/launch.sh"]

這是launch.sh

#!/bin/bash

(cd /other_service && python3 /other_service/start.py &) # CWD needs to be /other_service/
php -S 0.0.0.0:70 -t /var/www/html

這也可以毫無問題地啟動服務器,以及other_service 但是,當我轉到我的瀏覽器(在主機中)並瀏覽到http://localhost:70時,我收到錯誤“連接重置”。 當我嘗試使用curl localhost:70發出請求時也會發生同樣的情況,這會導致curl: (56) Recv failure: Connection reset by peer

我可以在web的日志中看到 php 測試服務器正在運行:

PHP 7.4.30 Development Server (http://0.0.0.0:70) started

如果我在容器內打開一個外殼並在其中運行curl命令,它會毫無問題地獲取網頁。

我一直在搜索類似的問題,但如果他們有答案,那就沒有了,而那些沒有用的。

到底是怎么回事? 不應該從 bash 腳本手動啟動服務器就可以了?

編輯:我剛剛嘗試只啟動 PHP 服務器,如下所示,它也不讓我連接到網頁

#!/bin/bash

#(cd /other_service && python3 /other_service/start.py &) # CWD needs to be /other_service/
php -S 0.0.0.0:70 -t /var/www/html

我發現了這個問題。 就像啟動 Apache 服務器一樣簡單:

#!/bin/bash

(cd /other_service && python3 /other_service/start.py &) # CWD needs to be /other_service/
/etc/init.d/apache2 start
php -S 0.0.0.0:70 -t /var/www/html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM