Cómo crear una imagen y su contenedor Docker con un servidor web Nginx y PHP. Cómo probar el servidor web con la página de test de PHP. Cómo crear un fichero index.php dentro del servidor web contenedor Docker.
- Requisitos para crear contenedor con Nginx y PHP.
- Crear imagen y contenedor Docker con Nginx y PHP.
- Probar servidor web con Nginx y PHP en Docker.
Requisitos para crear contenedor con Nginx y PHP
El único requisito es disponer de Docker instalado en el equipo anfitrión (sea Linux o Windows), como indicamos en estos artículos:
- Instalar Docker y Docker Compose en Linux Debian 11.
- Instalar Docker Desktop en Windows mi primer contenedor Hola Mundo.
En uno de los contenedores Docker de este tutorial (en concreto en docker-web-1) necesitaremos disponer del editor de ficheros de texto nano, para instalarlo en el contendor, seguiremos los pasos del siguiente tutorial:
El equipo anfitrión debe tener conexión a Internet.
Crear imagen y contenedor Docker con Nginx y PHP
Para desplegar un servidor web con PHP, accederemos a una carpeta del equipo desde el shell de comandos (cualquier carpeta) y crearemos un fichero con el nombre compose.yaml y con el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
services: web: image: nginx:latest ports: - '8080:80' volumes: - ./src:/var/www/html - ./cf.conf:/etc/nginx/conf.d/cf.conf links: - php-fpm php-fpm: image: php:8-fpm volumes: - ./src:/var/www/html |
En la misma carpeta, crearemos un fichero con el nombre cf.cnf y el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
server { index index.php index.html; server_name phpfpm.local; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/html; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php-fpm:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } } |
Desde la línea de comandos, en la misma carpeta donde hayamos creado los dos ficheros anteriores, ejecutaremos el siguiente comando docker:
1 |
docker compose up -d |
Si todo es correcto, Docker descargará y desplegará las imágenes y contenedores respectivos para Nginx y para PHP.
Comprobaremos que se han creado los dos contenedores y anotaremos sus nombres (puede que los necesitemos más adelante). Para ello, ejecutaremos el comando docker:
1 |
docker ps |
Probar servidor web con Nginx y PHP en Docker
Para comprobar que nuestro servidor web con Nginx y PHP funciona correctamente, añadiremos un fichero con el nombre index.php, en la carpeta /var/www/html del contenedor de Nginx (llamado docker-web-1). Para ello, ejecutaremos el siguiente comando:
1 |
docker exec -it docker-web-1 bash -c 'nano /var/www/html/index.php' |
En el editor nano, añadiremos el contenido siguiente:
1 2 3 |
<?php echo phpinfo(); ?> |
Guardaremos pulsando Control + O y cerraremos la edición pulsando Control + X.
Ahora podremos probar el servidor web con PHP abriendo un navegador desde cualquier equipo de la red e introduciendo la URL:
http://IP_Equipo_Anfitrión:8080
(Sustituiremos IP_Equipo_Anfitrión por la IP del equipo anfitrión de Docker)
Si todo es correcto, nos mostrará la página de pruebas de PHP del servidor web Nginx en el contenedor Docker:
Podremos consultar el fichero de errores y el de log de accesos del servidor web. Para ello, desde el shell de comandos del equipo anfitrión ejecutaremos el siguiente comando Docker:
1 |
tail -f `docker inspect --format='{{.LogPath}}' docker-web-1` |
Nos mostrará (actualizándose automáticamente) el contenido de los ficheros access.log y error.log del contenedor Docker de Nginx.