2017-04-22 85 views
0

我有一個在Docker容器中運行的REST API的Symfony應用程序。MongoDB不能在Docker中使用Symfony應用程序

所有路線的作品,但是當我試圖訪問一個路由數據庫,從數據庫中添加信息或提取信息,我收到

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. 

泊塢窗,撰寫文件創建的*與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 

*我試圖添加鏈接到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) - 這是確定

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

登錄,當我試圖訪問一個網址(localhost:8000/transactions/user=invalid&day=1492453903&threshold=100)有效,但與無效數據 - 這是確定

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

當我嘗試接受日誌時SS的URL (localhost:8000/transactions/user=100&day=1492453903&threshold=100)與來自Mongo的數據庫中插入一個有效的數據有效 - 也不行

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

它仍然試圖連接到「localhost:27017」而不是「mongo:27017」。你可以發佈你的'app/config/config.yml'文件嗎? – saada

回答

2

兩個問題:

  1. 你的nginx的服務器,而不是PHP/symfony的服務器
  2. 您的鏈接也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

謝謝,薩達給你的幫助,非常感謝你! –

相關問題