Quieres aprender php, pero las configuraciones te han abrumado y el deseo de aprender van mermando. No, no detengas tu aprendizaje, siempre existe una solución a los problemas. Instalar php, configurar un servidor web en Windows es muy sencillo, en Linux y macOS es otra situación. Debes conocer sobre la terminal, un editor de código, vim, nano, ser avanzado... y mucho más.
La herramienta que vamos a utilizar y que permite trabajar con php, un servidor web y la terminal es Docker.
Docker: Es una plataforma de software que permite crear, probar e implementar aplicaciones rápidamente.
Docker-compose: Es una herramienta para definir y ejecutar aplicaciones; es multicontenedor que permite simplificar el uso de Docker a partir de archivos YAML, de esta forma es más sencillo generar contendores que se relacionen entre sí, conectarlos, habilitar puertos, volúmenes, etc.
Servidor web: software que permite a los usuarios ver una página web en su navegador. Servidores más utilizados Apache y Nginx.
Crear el archivo docker-compose.yml con la siguiente configuración:
# Los archivos docker-compose.yml son versionados, lo que significa que es muy importante indicar la versión de las instrucciones que queremos darle.
version: "3.3"
# Servidor nginx
services:
web:
# versión
image: nginx:latest
# Puerto 8080
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
links:
- php-fpm
# Configuración de php-fpm
php-fpm:
image: php:8-fpm
volumes:
- ./src:/var/www/htmlCreamos un nuevo archivo con el nombre default.conf con la siguiente configuración, al nivel que docker-compose.yml.
# No te preocupes, por las configuraciones.
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;
}
}Crea e Iniciar el contenedor:
# Crea e inicia el contenedor
# -d inicia los contenedores en segundo plano y los deja en ejecución.
➜ docker-compose up -d# Crea e inicia el contenedor en primer plano
➜ docker-compose upPara que la interacción sea efectiva y el aprendizaje una experiencia positiva, los archivos .php se crean dentro del directorio src.
# directorio principal
├── docker-php
│ ├── default.conf
│ ├── docker-compose.yml
│ ├── README.md
│ └── src # Directorio
│ ├── holi.php
└── └── index.php
# Dentro de la carpte src, crear el archivo index.phpCrear el archivo index.php en el directorio src,
# contenido de index.php
<?php
echo phpinfo();Ir al navegador favorito, visitar el siguiente enlace http://localhost:8080. Surge algún un error con la conexión al servidor local, agregar en la dirección php-fpm. a localhost:8080. La dirección queda de la siguiente forma:
http://php-fpm.localhost:8080/Listo, tienes corriendo tu primer servidor nginx, junto a php utilizando docker-compose.
Ingresar a bash de docker-compose
➜ docker-compose exec php-fpm bashCrea el archivo variables.php
# crear archivo
touch variables.phpvariables.php
<?php
// Definir variables
$numero_1 = 8;
$numero_2 = 7;
// Definir constantes
define("NUMERO_PI", 3.14);
// define("NUMERO_PI", 14);
echo NUMERO_PI;
echo "\n";
echo $numero_1 + $numero_2;
echo "\n";% Ejecutamos el archivo php en terminal:
php variables.phpCon el comando exit, cerramos bash.
Detener el contenedor que se ejecuta en segundo plano
# Segundo plano
docker-compose downDetener contenedor en primer plano
# Primer plano
ctl + cEnlace del Repositorio
Utilizar Docker para aprender un lenguaje de programación, es una oportunidad de no para de aprender. Puedes tomar el Curso de Docker y el Curso de Introducción a la Terminal y Línea de Comandos en platzi, de esta manera conoceras los fundamentos de php, crear ambientes en contenedores como todo un profesional.
Nunca pares de aprender







Tremendo aporte compañero, a mi y a muchos nos has ahorrado horas de configuración del fichero docker para tener listo un server en php
Aún me sorprende que podamos tener un server encapsulado y funcional sólo ejecutando
docker-compose up -d