Cómo crear entornos de desarrollo PHP con Docker Compose: un kit de taller de DigitalOcean

Materiales del kit de taller Cómo crear entornos de desarrollo PHP con Docker Compose
Este kit de taller está diseñado para ayudar a una audiencia técnica a familiarizarse con Docker Compose y aprender a configurar un entorno de desarrollo funcional para una aplicación Laravel utilizando contenedores.
El objetivo es proporcionar un conjunto completo de recursos para que un orador organice un evento y brinde una charla introductoria sobre Docker Compose en el contexto de los entornos de desarrollo PHP. Incluye:
- Diapositivas y notas del orador , incluidos comandos para ejecutar una demostración en vivo opcional. Esta charla tiene una duración aproximada de 40 minutos.
- Un repositorio de GitHub que contiene el código de la aplicación de demostración y los archivos adicionales necesarios para poner en funcionamiento un entorno de desarrollo PHP con Docker y Docker Compose.
- Este tutorial guía al usuario a través del proceso de ejecución de la aplicación Laravel de demostración Travellist en contenedores con Docker Compose.
Esta guía está destinada a complementar la demostración de la charla con detalles y aclaraciones adicionales.
Introducción
Este tutorial, diseñado para acompañar las diapositivas y las notas del orador para la presentación de diapositivas Cómo crear entornos de desarrollo PHP con Docker Compose, le mostrará cómo poner en funcionamiento una aplicación Laravel de demostración con Docker y Docker Compose, utilizando la configuración que analizamos con mayor detalle en nuestra guía sobre Cómo configurar Laravel con Docker Compose en Ubuntu 20.04.
Nota : Este material tiene como objetivo demostrar cómo utilizar Docker Compose para crear entornos de desarrollo PHP. Aunque nuestra demostración consiste en una aplicación Laravel que se ejecuta en un servidor LEMP, se recomienda a los lectores que modifiquen y adapten la configuración incluida para que se ajuste a sus propias necesidades.
Prerrequisitos
Para seguir este tutorial, necesitarás:
- Acceso a una máquina local o servidor de desarrollo Ubuntu 20.04 con al menos 1 GB de RAM, como usuario no root con privilegios sudo. Si está utilizando un servidor remoto, es recomendable tener instalado un firewall activo. Para configurarlo, consulte nuestra Guía de configuración inicial del servidor para Ubuntu 20.04.
- Docker instalado en su máquina local o servidor de desarrollo, siguiendo los pasos 1 y 2 de Cómo instalar y usar Docker en Ubuntu 20.04.
- Docker Compose instalado en su máquina local o servidor de desarrollo, siguiendo el Paso 1 de Cómo instalar y usar Docker Compose en Ubuntu 20.04.
Paso 1: Descargue la aplicación de demostración
Para comenzar, descargue la versión tutorial-4.0.3
de demostración de la aplicación Travellist Laravel, que contiene los archivos de la aplicación y la configuración de Docker Compose que se utilizan en este kit de taller.
- curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-4.0.3.zip --output travellist.zip
A continuación, instale la unzip
utilidad en caso de que aún no esté instalada en su máquina local o servidor de desarrollo:
- sudo apt install unzip
Descomprima el paquete y muévalo al directorio recién creado:
- unzip travellist.zip
- cd travellist-laravel-demo-tutorial-4.0.3
Ahora, puedes ejecutar un ls
comando para inspeccionar el contenido del repositorio clonado:
- ls -l --group-directories-first
Recibirás un resultado como este:
demostración de ansible-laravel
total 256drwxrwxr-x 6 sammy sammy 4096 mei 14 16:16 appdrwxrwxr-x 3 sammy sammy 4096 mei 14 16:16 bootstrapdrwxrwxr-x 2 sammy sammy 4096 mei 14 16:16 configdrwxrwxr-x 5 sammy sammy 4096 mei 14 16:16 databasedrwxrwxr-x 4 sammy sammy 4096 mei 14 16:16 docker-composedrwxrwxr-x 5 sammy sammy 4096 mei 14 16:16 publicdrwxrwxr-x 6 sammy sammy 4096 mei 14 16:16 resourcesdrwxrwxr-x 2 sammy sammy 4096 mei 14 16:16 routesdrwxrwxr-x 5 sammy sammy 4096 mei 14 16:16 storagedrwxrwxr-x 4 sammy sammy 4096 mei 14 16:16 tests-rwxr-xr-x 1 sammy sammy 1686 mei 14 16:16 artisan-rw-rw-r-- 1 sammy sammy 1501 mei 14 16:16 composer.json-rw-rw-r-- 1 sammy sammy 181665 mei 14 16:16 composer.lock-rw-rw-r-- 1 sammy sammy 1016 mei 14 16:16 docker-compose.yml-rw-rw-r-- 1 sammy sammy 737 mei 14 16:16 Dockerfile-rw-rw-r-- 1 sammy sammy 1013 mei 14 16:16 package.json-rw-rw-r-- 1 sammy sammy 1405 mei 14 16:16 phpunit.xml-rw-rw-r-- 1 sammy sammy 814 mei 14 16:16 readme.md-rw-rw-r-- 1 sammy sammy 563 mei 14 16:16 server.php-rw-rw-r-- 1 sammy sammy 538 mei 14 16:16 webpack.mix.js
Estos son los directorios y archivos relevantes para la configuración de Docker Compose que estamos usando:
docker-compose/
— contiene archivos utilizados para configurar el entorno en contenedores, como el archivo de configuración de Nginx y el volcado MySQL de la aplicación.docker-compose.yml
— Aquí definimos todos los servicios que necesitaremos:app
,web
, ydb
. Aquí también se configuran los volúmenes y redes compartidas.Dockerfile
— esto define una imagen de aplicación personalizada basada enphp-fpm
. Si bien los serviciosweb
ydb
se basan en imágenes predeterminadas, elapp
servicio requiere pasos de configuración adicionales; por eso estamos creando una imagen personalizada para este contenedor de servicios.
Todos los archivos restantes son parte de la aplicación.
Paso 2: Configurar el .envarchivo de la aplicación
Ahora creará un nuevo .env
archivo utilizando el archivo incluido .env.example
como base. Debido a que Laravel utiliza un archivo dot env que también es compatible con Docker Compose, los valores establecidos aquí estarán disponibles en el momento de la compilación cuando inicie su entorno y se utilizarán para configurar el contenedor de servicio de base de datos.
- cp .env.example .env
Como referencia, así es como .env
se ve el archivo incluido. Debido a que estas configuraciones se aplican a un entorno de desarrollo aislado, no es necesario cambiar las credenciales de la base de datos en este archivo, pero puede hacerlo si lo desea.
.env
APP_NAME=TravellistAPP_ENV=devAPP_KEY=APP_DEBUG=trueAPP_URL=http://localhost:8000LOG_CHANNEL=stackDB_CONNECTION=mysqlDB_HOST=dbDB_PORT=3306DB_DATABASE=travellistDB_USERNAME=travellist_userDB_PASSWORD=passwordBROADCAST_DRIVER=logCACHE_DRIVER=fileQUEUE_CONNECTION=syncSESSION_DRIVER=cookieSESSION_LIFETIME=120REDIS_HOST=127.0.0.1REDIS_PASSWORD=nullREDIS_PORT=6379MAIL_DRIVER=smtpMAIL_HOST=smtp.mailtrap.ioMAIL_PORT=2525MAIL_USERNAME=nullMAIL_PASSWORD=nullMAIL_ENCRYPTION=nullAWS_ACCESS_KEY_ID=AWS_SECRET_ACCESS_KEY=AWS_DEFAULT_REGION=us-east-1AWS_BUCKET=PUSHER_APP_ID=PUSHER_APP_KEY=PUSHER_APP_SECRET=PUSHER_APP_CLUSTER=mt1MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Una vez que esté satisfecho con su .env
archivo, debe continuar ejecutando Docker Compose, como se describe en la próxima sesión.
Paso 3: Ejecutar Docker Compose
Una vez que tenga su .env
archivo en su lugar, puede poner en funcionamiento su entorno con:
- docker-compose up -d
Esto ejecutará Docker Compose en modo independiente, lo que significa que se ejecutará en segundo plano. Este comando puede tardar unos minutos en ejecutarse cuando lo ejecute por primera vez, ya que descargará y creará la app
imagen del servicio.
OutputCreating network "travellist-laravel-demo-tutorial-403_travellist" with driver "bridge"Creating travellist-db ... doneCreating travellist-app ... doneCreating travellist-nginx ... done
Para verificar el estado de sus servicios, puede ejecutar:
- docker-compose ps
Recibirás un resultado como este:
Output Name Command State Ports --------------------------------------------------------------------------------travellist-app docker-php-entrypoint php-fpm Up 9000/tcp travellist-db docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp travellist-nginx /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000-80/tcp
Tu entorno de desarrollo PHP en contenedores está en funcionamiento, pero aún quedan un par de pasos para que puedas acceder a la aplicación desde tu navegador. Configuraremos todo en el siguiente y último paso.
Paso 4: Finalizar la configuración de la aplicación
Ahora que tiene un entorno de desarrollo capaz de manejar scripts PHP, puede instalar las dependencias de la aplicación mediante composer
. Para ejecutar comandos dentro de los contenedores, puede utilizar el docker-compose exec
comando, seguido del nombre del contenedor de servicio y el comando que desea ejecutar.
El siguiente comando se ejecutará composer install
en el app
contenedor de servicio, donde está instalado PHP:
- docker-compose exec app composer install
Una vez instaladas las dependencias, deberá generar una clave de aplicación única utilizando la artisan
herramienta de línea de comandos de Laravel:
- docker-compose exec app php artisan key:generate
OutputApplication key set successfully.
Ahora puede acceder a la aplicación de demostración apuntando su navegador a localhost
si está ejecutando esta configuración en una máquina local, o al nombre de dominio o la dirección IP de su servidor remoto si está ejecutando esto en un servidor de desarrollo. El servidor espera conexiones en el puerto 8000
, así que asegúrese de incluir :8000
en la dirección:
http://localhost:8000
Verás una página como ésta:
Al visualizar esta página en su navegador habrá configurado correctamente su aplicación.
Referencia rápida de Docker Compose
En esta sección, encontrará una breve referencia de los principales comandos de Docker Compose que se utilizan para administrar un entorno en contenedores. Estos deben ejecutarse desde el mismo directorio en el que ha configurado su docker-compose.yml
archivo.
build
Crea cualquier imagen personalizada asociada con el docker-compose.yml
archivo actual, sin activar el entorno.
- docker-compose build
up
Activa el entorno. Las imágenes personalizadas se crearán automáticamente cuando no estén almacenadas en caché y cuando realices cambios en el Dockerfile al que se hace referencia.
- docker-compose up
ps
Similar a docker ps
, muestra el estado de los servicios activos asociados con el docker-compose.yml
archivo actual.
- docker-compose ps
exec
Ejecuta un comando en el servicio especificado.
- docker-compose exec service-name command
stop
Detiene el entorno activo, mientras conserva los recursos asignados: contenedores, volúmenes y redes.
- docker-compose stop
start
Abre un entorno que se detuvo previamente con el stop
comando.
- docker-compose start
logs
Muestra los últimos registros de los servicios activos.
- docker-compose logs
top
Muestra los procesos que se ejecutan en el servicio especificado.
docker-compose top service-name
down
Detiene el entorno contenedorizado junto con todos los recursos asignados.
docker-compose down
Para obtener más información sobre cada comando de Docker Compose disponible, consulte su documentación oficial.
Conclusión
Esta guía complementa las diapositivas y las notas del orador del kit de taller Cómo crear entornos de desarrollo PHP con Docker Compose, y está acompañada por un repositorio de GitHub de demostración que contiene todos los archivos necesarios para realizar un seguimiento del componente de demostración de este taller.
Para obtener una guía más detallada sobre entornos PHP en contenedores con Docker Compose, consulte nuestro tutorial sobre Cómo instalar y configurar Laravel con Docker Compose en Ubuntu 20.04.
Deja una respuesta