Docker can be used to install nginx and php5 (php-mpm) in a ubuntu container. We’ll cover docker running on Mac and Ubuntu Linux for the purpose of this tutorial. The steps are mostly same for both environments.
-
Download ubuntu image and run it. We’ll use
-p 8081:80
when running docker container to make its port 80 available on host port 8081.$ docker pull ubuntu $ docker run -it -p 8081:80 --name nginxphp1 ubuntu /bin/bash docker
-
Install nginx and php5-fpm (in docker)
$ apt-get update $ apt-get upgrade $ apt-get install nginx $ apt-get install php5-fpm $ service nginx start $ service php5-fpm start
-
Extra step for Mac. Find docker host IP for mac as it is not localhost for Mac.
$ docker-machine ip default 192.168.99.100
Note that for Mac, instead of localhost, we’ll use this ip.
-
Check if ngnix is working by visiting localhost:8081 (or docker_host_ip:8081 for Mac) in browser and you should be able to see nginx default page.
-
Edit default site settings in
/etc/nginx/sites-available/default
and uncomment php settings. It should look like this.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
Note that we have keptfastcgi_pass
commented out.Now restart nginx
$ service nginx restart
-
Now edit
/etc/php5/fpm/php.ini
and
addcgi.fix_pathinfo = 0
in relevant section. Then restart php5-fpm$ service php5-fpm restart * Restarting PHP5 FastCGI Process Manager php5-fpm
-
Start service nginx and php5-fpm
service nginx start
service php5-fpm start -
Create file info.php in directory
/usr/share/nginx/html/
with the following content:
<?php phpinfo(); ?>
Now visit localhost:8081/info.php (or docker_host_ip:8081/info.php for Mac) and you should be able to see php info page.