1

ユーザーからの送信時にPythonコードをコンパイルして結果を返すPHPアプリケーションがあります。アプリケーションはElastic Beanstalk上でホストされており、Dockerコンテナ内で動作させたいときまでうまく動作しています。作業バージョンについてはエラーElastic BeanstalkでホストされているDockerized PHPアプリケーションの「python:not found」エラー

私は2として結果を得るでしょう、print(1+1)、私は、プラットフォーム上で実行されている64bit Amazon Linux with PHP 7.0アマゾンElastic Beanstalkで上のアプリケーションをデプロイし、例えば、簡単なコードを提出します。ドッカーコンテナ内でアプリケーションを実行するには

は、私は、チュートリアル http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecstutorial.html#create_deploy_docker_ecstutorial_connect からの指示に従って自分のPHPアプリケーションを含み、Multi-container Dockerにプラットフォームを設定するために、そのphp-appフォルダを変更しました。私はprint(1+1)のような単純なコードを提出しようとしたとき

しかし、私は私のEC2インスタンスでチェックし、インスタンスはPythonがインストールされていることを確認した
Array ( [0] => sh: 1: python: not found )

として結果を得ました。 PHPアプリケーションは、別のプラットフォームで完全に実行されているので、このエラーを引き起こしてはいけません(私は推測します)。だから私の問題は、なぜpython not foundエラーの代わりに結果を得ることができないのですか?

AWSとDockerの新機能です。私の問題を十分に明確に表現していない場合は、私を許してください。私のコンソール出力がEC2インスタンスかアプリケーションファイルか、それが何であれ必要であれば教えてください。助けのすべてのビットが高く評価されています!

答えて

0

コンテナでPHPアプリケーションを実行しているときは、Pythonがインストールされていないphp:fpmベースイメージを使用しています。理想的には、独自のDockerfileを作成し、Pythonを依存関係の1つとしてリストします。 Elastic Beanstalk形式に固執したい場合、これを回避する方法の1つは、コンテナを起動するときにPythonがインストールされていることを確認することです。 Dockerrun.aws.jsonのcotainerDefinitionsパラメータでは、ドキュメントに従って、ECSタスク定義の通常のパラメータを含めることができるので、 "command"(Docker APIのCMDコマンドにマッピングされる)というフィールドを1つ追加することができます。 、および[ "apt-getを"、 "更新"、 "& &"、 "apt-getを"、 "インストール"、 "パイソン"]に設定します。

"containerDefinitions": [ 
    { 
     "name": "php-app", 
     "image": "php:fpm", 
     "essential": true, 
     "memory": 128, 
     "mountPoints": [ 
     { 
      "sourceVolume": "php-app", 
      "containerPath": "/var/www/html", 
      "readOnly": true, 
      "command": ["apt-get", "update", "&&", "apt-get", "install", "python"] 
     } 
     ] 
    }, 

スピンアップ時にはPythonをインストールすることコンテナを作成し、PHPアプリケーションで使用できるようにします。 また、php:fpmから独自のベースイメージを作成し、PythonをインストールしてECRにアップロードし、そのURIをcontainerDefinitions:imageパラメータに追加することもできます(php:fpmではなく)。

+0

こんにちは、ありがとう、私はまだフィールドを追加した後、同じエラーが発生しました。アプリケーションを配備する際の特定の手順が間に合わなかったのですか?まず、 'php-app、proxy、Dockerrun.aws'を解凍し、このzipファイルをEBにアップロードします。それから、PHPサーバーに簡単なコードを送り、結果を受け取ることを期待します。これが私が毎回それをした方法です。 私はEC2インスタンスにSSHしようとして、 'sudo docker run php:fpm'コマンドを実行しましたが、まだ同じエラーがありました。 –

関連する問題