HOWTO · PHP
Configurar contenedores PHP-FPM y Nginx Docker
En este tutorial, analizaremos cómo puede configurar sus contenedores PHP, PHP-FPM y NGINX al desarrollar localmente en Docker.
Este tutorial analizará cómo configurar sus contenedores PHP, PHP-FPM y NGINX al desarrollar localmente en Docker.
Comida para llevar:
- Construya y ejecute contenedores en su línea de comando.
- El archivo Docker y sus usos.
- Cómo interactúan los contenedores.
Asegúrese de tener el programa Docker y Git Bash instalados en su dispositivo.
Configurar el contenedor CLI de PHP
Crearemos el directorio C:/delft/docker-php/app, donde almacenaremos nuestro código fuente:
mkdir -p "C:/delft/docker-php/app"
En nuestro tutorial, usaremos la imagen oficial de PHP. Ejecutamos el siguiente código;
docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
Esto significa,
docker run: esto ejecutará un contenedor.-d- Se ejecutará en segundo plano (independiente).--name docker-php: esto especificarádocker-php.-v "C:/delft/docker-php/app":/var/www- Esto sincronizará el directorioC:/delft/docker-php/appen el host de Windows con/var/wwwen el contenedor.php:7.0-cli: utilizará esta imagen para construir el contenedor.
Producción :
$ docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
Debido a que nuestra máquina no tiene la imagen, Docker intentará obtener la imagen del registro oficial.
Ejecutamos el comando docker ps -a para ver si el contenedor se está ejecutando.
Notará que el contenedor deja de ejecutarse inmediatamente después de la inicialización. Necesitamos agregar el argumento -i al comando docker run.
Antes de volver a ejecutar el comando docker run, ejecute el siguiente comando.
docker rm docker-php
El comando anterior elimina nuestro primer docker-php ya que no podemos usarlo nuevamente. Ahora podemos ejecutar el comando docker run con el indicador -i.
docker run -di --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6
Ejecute el comando docker ps -a para verificar si el contenedor se está ejecutando.
Para iniciar sesión, ejecute el siguiente comando;
winpty docker exec -it docker-php bash
Configure una pila web con PHP-FPM y NGINX
Analicemos ahora cómo puede configurar los contenedores PHP-FPM y Nginx.
Configurar NGINX
Comenzamos con la obtención de un servidor que actuará como contenedor para ejecutar la imagen oficial de Nginx. Crearemos un docker-compose.yml para ejecutar nuestra última imagen de Nginx. Utilizaremos los puertos 80 y 8080.
web:
image: nginx:latest
ports:
- "8080:80"
Luego ejecutamos el comando docker-compose up.
Producción:
Montemos el archivo docker-compose.yml en un repositorio local. Usaremos la carpeta delft, donde se encuentra nuestro archivo docker-compose.yml.
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
En este punto, Nginx no sabe que nuestra carpeta existe. Usaremos el siguiente archivo site.conf para resolver esto.
server {
index index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
}
Necesitamos activar la configuración. Modifiquemos un poco más el archivo docker-compose.yml.
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
Ahora podemos agregar un index.html a nuestra carpeta deft y ejecutar el código a continuación;
docker-compose up
Nuestro Nginx debería estar en funcionamiento.
Añadir PHP-FPM
El siguiente paso es obtener el PHP7-FPM oficial, que se vinculará a nuestro contenedor Nginx. El archivo docker-compose.yml actualizado debería verse así.
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
Ahora configuraremos nuestro contenedor Nginx para interpretar archivos PHP utilizando el contenedor PHP-FPM. Nuestro archivo site.conf actualizado leerá,
server {
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Probemos el programa. Primero, cambiaremos el nombre de nuestro archivo index.html a index.php y cambiaremos el contenido a lo siguiente.
<?php
echo phpinfo();
Antes de ejecutar el comando docker-compose up, debemos montar nuestra carpeta delft en nuestro contenedor PHP. La iteración final de nuestro archivo docker-compose.yml dirá,
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
volumes:
- ./delft:/delft
Ejecutar el comando docker-compose up produce la imagen a continuación.
Eso resume nuestro tutorial.