Php-fpm is an advanced and highly efficient processor for php. In order for your php files to be viewable in a web browser, php-fpm needs to be coupled with a web server, such as nginx. In this tutorial we will show how to setup php-fpm and nginx is docker.
1. Create a directory for your files
$ sudo mkdir phpfpm
2. Create a network for the containers to use. This makes sure that we can use container's name in the configuration file.
$ docker network create php-network
3. Create nginx config file
$ cd phpfpm
$ cat > default.conf <<EOF
server {
listen 80;
# this path MUST be exactly as docker-compose.fpm.volumes,
# even if it doesn't exist in this dock.
root /complex/path/to/files;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/.+\.php(/|$) {
fastcgi_pass fpm:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
EOF
4. Create an index.php file with some random php code (we are using phpinfo() to make it easier)
$ cat > index.php <<EOF
<?php phpinfo(); ?>
EOF
5. Run a php-fpm container, in detached and intaractive mode, using php-network, and we mount /home/user/phpfpm to /var/www/html in container
$ docker run -dit --name fpm --network php-network -v /home/user/phpfpm:/var/www/html
6. Run an nginx container in detached and intaractive mode, using php-network, and we mount /home/user/phpfpm/default.conf to /etc/nginx/conf.d/default.conf in container
$ docker run -dit --name nginx --network php-network -v /home/user/phpfpm/default.conf:/etc/nginx/conf.d/default.conf -p 80:80 nginx
7. Open a browser, and browse to http://localhost, you should now be able to see the PHPinfo page.
Of course, there is an easier way to set this up using docker-compose. We will cover that in another post.
No comments:
Post a Comment