2017-04-22 5 views
0

Dockerコンテナで実行されるREST API用のSymfonyアプリケーションがあります。DockerのsymfonyアプリケーションでMongoDBが動作しない

すべてのルートがPHPDockerで作成されたドッキングウィンドウ・コンファイル*は

version: "3.1" 
services: 
    mongo: 
    image: mongo:3.0 
    container_name: mongo 
    command: mongod --smallfiles 
    expose: 
     - 27017 

    webserver: 
    tty: true 
    image: phpdockerio/nginx:latest 
    container_name: code-webserver 
    working_dir: /application 
    volumes: 
     - .:/application 
     - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf 
    ports: 
    - "8000:80" 

    php-fpm: 
    build: 
     context: . 
     dockerfile: phpdocker/php-fpm/Dockerfile 
    container_name: code-php-fpm 
    ### MOVE ENVIRONMENT VARIABLES HERE 
    environment: 
     SYMFONY__MONGO_ADDRESS: mongo 
     SYMFONY__MONGO_PORT: 27017 
    working_dir: /application 
    volumes: 
     - .:/application 
     - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php5/fpm/conf.d/99-overrides.ini 
ある

Oops! An Error Occurred 

The server returned a "500 Internal Server Error". 

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused. 

に動作しますが、私は、データベース内の情報を追加したり、データベースから情報を抽出する経路にアクセスしようとしたとき、私はメッセージを受け取ります

* mongoイメージへのリンクを追加しようとしましたが、動作しません。

コマンドの結果docker-compose up

PS E:\API\web_server\code> docker-compose up 
Starting code-php-fpm 
Starting mongo 
Starting code-webserver 
Attaching to mongo, code-php-fpm, code-webserver 
mongo  | 2017-04-22T23:11:52.947+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/ 
db 64-bit host=5c9a4a252688 
mongo  | 2017-04-22T23:11:52.947+0000 I CONTROL [initandlisten] db version v3.0.14 
mongo  | 2017-04-22T23:11:52.947+0000 I CONTROL [initandlisten] git version: 08352afcca24bfc145240a0fac9d28b978ab 
77f3 
code-php-fpm | [22-Apr-2017 23:11:52] NOTICE: fpm is running, pid 5 
mongo  | 2017-04-22T23:11:52.947+0000 I CONTROL [initandlisten] build info: Linux ip-10-30-223-232 3.2.0-4-amd64 
#1 SMP Debian 3.2.46-1 x86_64 BOOST_LIB_VERSION=1_49 
mongo  | 2017-04-22T23:11:52.947+0000 I CONTROL [initandlisten] allocator: tcmalloc 
code-php-fpm | [22-Apr-2017 23:11:52] NOTICE: ready to handle connections 
mongo  | 2017-04-22T23:11:52.947+0000 I CONTROL [initandlisten] options: { storage: { mmapv1: { smallFiles: true 
} } } 
code-php-fpm | [22-Apr-2017 23:11:52] NOTICE: systemd monitor interval set to 10000ms 
mongo  | 2017-04-22T23:11:52.959+0000 I JOURNAL [initandlisten] journal dir=/data/db/journal 
mongo  | 2017-04-22T23:11:52.959+0000 I JOURNAL [initandlisten] recover : no journal files present, no recovery n 
eeded 
mongo  | 2017-04-22T23:11:53.395+0000 I JOURNAL [durability] Durability thread started 
mongo  | 2017-04-22T23:11:53.395+0000 I JOURNAL [journal writer] Journal writer thread started 
mongo  | 2017-04-22T23:11:53.653+0000 I NETWORK [initandlisten] waiting for connections on port 27017 

ログは、私は、アプリケーションから簡単なページ(localhost:8000)にアクセスしようとしたとき - 私は(localhost:8000/transactions/user=invalid&day=1492453903&threshold=100)有効ですが、無効なデータでURLにアクセスしようとしたとき、それはOK

code-php-fpm | 172.19.0.4 - 22/Apr/2017:23:24:52 +0000 "GET /app.php" 200

ログだ - それは大丈夫だ

code-php-fpm | 172.19.0.4 - 22/Apr/2017:23:23:32 +0000 "GET /app.php" 400

私がアクセルしようとしたときのログSSのmongoデータベースの挿入から有効なデータを持つ有効なURL (localhost:8000/transactions/user=100&day=1492453903&threshold=100) - OKではありません

code-php-fpm | 172.19.0.4 - 22/Apr/2017:23:13:09 +0000 "GET /app.php" 500

'parameters.yml' ファイル

# This file is auto-generated during the composer install 
parameters: 
    database_host: 127.0.0.1 
    database_port: null 
    database_name: symfony 
    database_user: root 
    database_password: null 
    mailer_transport: smtp 
    mailer_host: 127.0.0.1 
    mailer_user: null 
    mailer_password: null 
    secret: ThisTokenIsNotSoSecretChangeIt 
    mongodb_server: 'mongodb://mongo:27017' 

config.ymlファイルが

doctrine_mongodb: 
    connections: 
     default: 
      server: "%mongodb_server%" 
      options: {} 
    default_database: hootsuite_database 
    document_managers: 
     default: 
      mappings: 
       DBBundle: ~ 
が含まれています

Symfonyプロジェクトのログ:

[2017-04-23 07:03:25] request.INFO: Matched route "db_transaction_gettransactions". {"route":"db_transaction_gettransactions","route_parameters":{"_controller":"DBBundle\\Controller\\TransactionController::getTransactionsAction","_route":"db_transaction_gettransactions"},"request_uri":"http://localhost:8000/transactions/?day=1492453903&threshold=123&user=500","method":"GET"} [] 
[2017-04-23 07:03:25] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] 
[2017-04-23 07:03:25] request.CRITICAL: Uncaught PHP Exception MongoConnectionException: "Failed to connect to: localhost:27017: Connection refused" at /application/vendor/doctrine/mongodb/lib/Doctrine/MongoDB/Connection.php line 282 {"exception":"[object] (MongoConnectionException(code: 71): Failed to connect to: localhost:27017: Connection refused at /application/vendor/doctrine/mongodb/lib/Doctrine/MongoDB/Connection.php:282)"} [] 

Robomongoでデータベースを表示しようとすると、localhost:27017が動作します。

アドバイスはありますか? ありがとう!

+0

500は内部サーバーエラーを意味します。私はSymfonyからログが抜けていると思います... '/ project/var/logs'をチェックしましたか? – saada

+0

このアプリはMongoDBに接続できません。私はその投稿を投稿した。私はそれをどのようにすることができますか? –

+0

"mongo:27017"の代わりに "localhost:27017"に接続しようとしています。 'app/config/config.yml'ファイルを投稿できますか? – saada

答えて

2

2つの問題:

  1. あなたが代わりに
  2. あなたのリンクはnginxのサーバー上にもあるPHP/symfonyのサーバーのnginxのサーバー上で環境変数を設定しています。 docker-composeの新しいバージョンでは、リンクを使用する必要はありません。 docker-composeは、プロジェクトのデフォルトでブリッジネットワークを作成します。このブリッジネットワーク上で実行されているすべてのサービスは、デフォルトで相互に接続できます。

このlinkブロックを取り除き、環境変数をnginxからphpに移動しました。

version: "3.1" 
services: 
    mongo: 
    image: mongo:3.0 
    container_name: mongo 
    command: mongod --smallfiles 
    expose: 
     - 27017 

    webserver: 
    tty: true 
    image: phpdockerio/nginx:latest 
    container_name: code-webserver 
    working_dir: /application 
    volumes: 
     - .:/application 
     - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf 
    ports: 
    - "8000:80" 

    php-fpm: 
    build: 
     context: . 
     dockerfile: phpdocker/php-fpm/Dockerfile 
    container_name: code-php-fpm 
    ### MOVE ENVIRONMENT VARIABLES HERE 
    environment: 
     SYMFONY__MONGO_ADDRESS: mongo 
     SYMFONY__MONGO_PORT: 27017 
    working_dir: /application 
    volumes: 
     - .:/application 
     - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php5/fpm/conf.d/99-overrides.ini 
+0

同じエラーが発生します。あなたのコンテンツでdocker-compose.ymlを使ってコンテンツを変更しました。私はSymfonyからログを投稿しました。アプリはMongoDBに接続しません。私はそれをどのようにすることができますか? –

+0

ありがとう、お元気ですか、ありがとう! –

関連する問題