2017-12-04 3 views
1

私は現在SlimフレームワークでRESTfulなAPIを開発していますが、ドッカーコンテナで実行しようとしています。しかし、問題は、スクリプトが1回だけ実行され、exitコード0でドッカーから自動的に抜け出すことです。つまり、index.phpページの最初のhttp要求をキャッチして戻してから終了します。Dockerコンテナは、PHPコードの実行直後に終了します

私はローカルサーバ上の特定のURL(localhost:8080/api/somethingなど)をリクエストするたびに、コンテナにApacheを実行する方法が必要であると確信していますコンテナ内で実行されているApacheサーバーがこれらの要求を処理します。しかし、私はドッカーの以前の経験がなかったので、私は現在これを解決することができません。

ここに私のDockerfileです:Apacheサーバが行うように誰かが、私のDockerfileまたはドッカー-コンファイルを変更する私の方法を教えてもらえます

version: '2' 

services: 
    app: 
     build: ./app 
     volumes: 
     - ./app:/usr/src/app 
     ports: 
     - 5001:80 

FROM php:7.0-cli 
COPY . /usr/src/my_app 
WORKDIR /usr/src/my_app/public 
CMD [ "php", "./index.php" ] 

は、ここに私のドッカー-コンファイルです最初のリクエストの後に終了しませんが、それでも実行され、他のリクエストをリッスンします。

ありがとうございます!ここで

+2

PHPではなくApacheを実行する必要があります。コマンドラインからPHPページを実行しようとしています。 –

+0

Dockerfileを変更してApacheベースイメージを読み込みましたが、別のエラーが表示されます。「このサーバーにアクセスする権限がありません。何か案が? – UrmLmn

+0

あなたは悪いApache設定ファイルを持っているように聞こえます –

答えて

3

はPHP7を実行するように設定されたApacheと画像の例である。この場合、

FROM ubuntu:latest 
MAINTAINER [email protected] 

RUN apt-get update 
RUN apt-get install php php-mysql php-cgi libapache2-mod-php -y 


COPY your/web/stuff/ var/www/html/ 

CMD /usr/sbin/apache2ctl -D FOREGROUND 

私は、Apache用のPHPの改造を設置し、フォアグラウンドでWebサーバを実行しています。ここでは、このDockerfileのビルドコマンドの例を示します。

docker build -t "myApache" . 

今、私は、このrunコマンドでコンテナを実行することができ、画像を持っていること:

docker run -p 8080:80 -p 4433:443 --name my_web_server -P -d myApache 

これが実行されていると次のことができるようにすべきですポート8080(http://localhost:8080)のWebサーバーにアクセス

+1

ありがとうございました!私はちょうど私のDockerfileを変更し、その中にあなたの設定を入れて、Dockerの構成を同じに保ちました。 – UrmLmn

+0

@UrmLmnのお手伝い –

関連する問題