Configurar contenedores PHP-FPM y Nginx 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/app
en el host de Windows con/var/www
en 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.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn