Introduction
In this post, I will show:- How to run a mongo dbdocker container?
- How to run Php with apache docker container?
- How to connect Php docker container to mongo?
- How to run some basic mongo dbqueries from phpcontainer?
Run a Mongo DB Docker Container?
Goto Docker for MongoDb. And, select mongo db image you want to run.Goto your command terminal.
Type:
docker run -d --name my-mongo mongo:latestThis will expose port: 27017 by default. You can connect to this mongo db instance by installing Robo 3T, a software for managing mongo db.
Run a Php docker container
I will run php5/apache container.Run:
docker run -d -p 8020:80 --name php-apache php:5-apacheNote: This will run a php container, but in order to be able to connect to mongo db container, you need to link this container to mongo db container.
docker run -d -p 8020:80 --link my-mongo --name php-mongo-test php:5-apacheNow, you should be able to see two container running by typing: “docker ps” command.
Install Mongo Php connector
You will need mongo php library in order to write php code that connect to mongo db.There are two ways:
- Run php/apache image, and install php-mongo manually
- Write a custom Dockerfile, and prepare your image to have php-mongo dependencies installed.
1. Run php/apache image, and install php-mongo manually
Check container id of php container, by typing command:docker psOpen a shell/bash in that container: (assumming 9da60559db80 is my container id)
docker exec -it 9da60559db80 bashNow, you are into the shell terminal of php container. You will need to install php-mongo dependencies.
Run following commands:
apt-get update
apt-get install openssl libssl-dev libcurl4-openssl-dev
pecl install mongo
echo "extension=mongo.so" > /usr/local/etc/php/conf.d/mongo.iniIn above steps, we basically installed few dependencies required for mongo db connector, and installed mongo db php extension, and included that in php.ini list.
Note: Php container loads all ini file present in /usr/local/etc/php/conf.d/ directory
Now, you need to restart your container in order to load mongo db extension.
Restart your container:
docker stop 9da60559db80
docker start 9da60559db802. Prepare docker image, with above steps baked in
Goto:https://github.com/GyanByte/php-mongo-docker, and build your image. You will have above steps pre-done. Enjoy.To test whether you have loaded mongo db extension correctly or not. Prepare a phpfile in /var/www/html directory say info.php, and put following content:
<?php
print phpinfo();On your browser, try: localhost:8082/info.php
You should see a big html page showing php information, and installed extensions. Search for mongo, and it should show some results.
Run Php code that connects to Mongo DB
<?php
$connection = new MongoClient( "mongodb://my-mongo:27017" );
$collection = $connection->selectCollection('db-name', 'collection-name');
if (!$collection) {
echo 'not connected to collection';
exit;
}
$cursor = $collection->find();
foreach ($cursor as $doc) {
var_dump($doc);
}












