我有一个用于在Docker容器中运行的REST API的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创建的docker-compose文件是
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
当我尝试使用mongo数据库中插入的有效数据访问有效数据的网址(localhost:8000/transactions/user=100&day=1492453903&threshold=100)
时记录 - 不是
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)"} []
当我尝试在localhost:27017
工作时使用Robomongo查看数据库。
有什么建议吗? 谢谢!
答案 0 :(得分:1)
两个问题:
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