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

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Descargue la aplicación de demostración
  • Paso 2: Configurar el .envarchivo de la aplicación
  • Paso 3: Ejecutar Docker Compose
  • Paso 4: Finalizar la configuración de la aplicación
  • Referencia rápida de Docker Compose
    1. build
    2. up
    3. ps
    4. exec
    5. stop
    6. start
    7. logs
    8. top
    9. down
  • Conclusión
  • 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.3de 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.

    1. curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-4.0.3.zip --output travellist.zip

    A continuación, instale la unziputilidad en caso de que aún no esté instalada en su máquina local o servidor de desarrollo:

    1. sudo apt install unzip

    Descomprima el paquete y muévalo al directorio recién creado:

    1. unzip travellist.zip
    2. cd travellist-laravel-demo-tutorial-4.0.3

    Ahora, puedes ejecutar un lscomando para inspeccionar el contenido del repositorio clonado:

    1. 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, y db. Aquí también se configuran los volúmenes y redes compartidas.
    • Dockerfile— esto define una imagen de aplicación personalizada basada en php-fpm. Si bien los servicios weby dbse basan en imágenes predeterminadas, el appservicio 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 .envarchivo utilizando el archivo incluido .env.examplecomo 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.

    1. cp .env.example .env

    Como referencia, así es como .envse 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 .envarchivo, debe continuar ejecutando Docker Compose, como se describe en la próxima sesión.

    Paso 3: Ejecutar Docker Compose

    Una vez que tenga su .envarchivo en su lugar, puede poner en funcionamiento su entorno con:

    1. 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 appimagen 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:

    1. 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 execcomando, seguido del nombre del contenedor de servicio y el comando que desea ejecutar.

    El siguiente comando se ejecutará composer installen el appcontenedor de servicio, donde está instalado PHP:

    1. docker-compose exec app composer install

    Una vez instaladas las dependencias, deberá generar una clave de aplicación única utilizando la artisanherramienta de línea de comandos de Laravel:

    1. 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 localhostsi 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 :8000en 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.ymlarchivo.

    build

    Crea cualquier imagen personalizada asociada con el docker-compose.ymlarchivo actual, sin activar el entorno.

    1. 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.

    1. docker-compose up

    ps

    Similar a docker ps, muestra el estado de los servicios activos asociados con el docker-compose.ymlarchivo actual.

    1. docker-compose ps

    exec

    Ejecuta un comando en el servicio especificado.

    1. docker-compose exec service-name command

    stop

    Detiene el entorno activo, mientras conserva los recursos asignados: contenedores, volúmenes y redes.

    1. docker-compose stop

    start

    Abre un entorno que se detuvo previamente con el stopcomando.

    1. docker-compose start

    logs

    Muestra los últimos registros de los servicios activos.

    1. 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.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion