Enter

Composer / 4 min de lectura

Cómo crear una imagen de Docker con Alpine Linux, PHP y Node

docker logo

Docker se volvió una solución popular para construir y desplegar aplicaciones en diferentes entornos de desarrollo y sistemas operativos. Gracias a su efectividad y popularidad, algunos se preguntaron cómo construir una imagen de Docker con Alpine Linux. Este post te dará la respuesta, paso a paso.

Construir una imagen de Docker que sea ligera y rica en características fue un gran logro en los entornos de desarrollo web. Ampliamos nuestra guía anterior para incluir el Dockerfile completo y explicar la razón detrás de cada paso.

Esta imagen de Docker, que tiene un tamaño total de apenas 34.7MB en su forma comprimida, contrasta fuertemente con los tamaños combinados de las imágenes de Node (381.8 MB) y Composer (46.23 MB), lo que la convierte en una candidata ideal para un uso eficiente en pipelines.

Vamos a repasar los pasos para construir una imagen de Docker en Alpine Linux con PHP 8.2.10 y Node 18.17.1, uno por uno.

Cómo Construir una Imagen de Docker en Alpine Linux: Guía Paso a Paso

Paso 1: La Imagen Base

FROM amd64/alpine:3.18.4

Comenzamos con amd64/alpine:3.18.4, una distribución de Linux mínima conocida por su pequeño tamaño.

Paso 2: Consiguiendo lo Esencial

# Install Composer 2.6.4
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

En este paso, instalamos Composer 2.6.4, que es una herramienta fundamental para manejar dependencias en proyectos de PHP. Usamos curl para descargar el instalador y lo colocamos en el directorio adecuado para que esté accesible desde cualquier lado.

# Instalando Composer
RUN curl -sS https://getcomposer.org/installer -o composer-setup.php
RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN rm -rf composer-setup.php

Composer gestiona las dependencias de PHP. Se descargó el script de instalación, se ejecutó y luego se eliminó para mantener la imagen limpia.

Paso 6: Configurando PHP

# Configurar PHP
RUN mkdir -p /run/php/
RUN touch /run/php/php8.2-fpm.pid

Este paso preparó los directorios y archivos necesarios para el funcionamiento de PHP.

Paso 7: Finalizando el Dockerfile

# Exponer el puerto 3000
EXPOSE 3000/tcp

# Establecer el directorio de trabajo
WORKDIR /media

Este es el último paso.

Exponemos el puerto 3000 para la aplicación y definimos /media como el directorio de trabajo.

El Dockerfile Completo

Acá tenés todo el código que necesitaste para construir una imagen de Docker con Alpine Linux, PHP 8.2.10 y Node 18.17.1, sin comentarios:

FROM amd64/alpine:3.18.4

# Esenciales
RUN echo "UTC" > /etc/timezone
RUN apk add --no-cache zip unzip curl

# Instalando bash
RUN apk add bash
RUN sed -i 's/bin/ash/bin/bash/g' /etc/passwd

# Instalando PHP 8.2.10 y Node 18.17.1
RUN apk add --no-cache php82 
    php82-phar 
    php82-curl 
    php82-openssl 
    php82-mbstring 
    php82-tokenizer 
    php82-xml 
    php82-xmlwriter 
    php82-xmlreader 
    php82-simplexml 
    php82-dom 
    nodejs   
    npm  
    git

RUN ln -s /usr/bin/php82 /usr/bin/php

# Instalando Composer 2.6.4
RUN curl -sS https://getcomposer.org/installer -o composer-setup.php
RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN rm -rf composer-setup.php

# Configurar PHP
RUN mkdir -p /run/php/
RUN touch /run/php/php8.2-fpm.pid

EXPOSE 3000/tcp

WORKDIR /media

Despliegue a Docker Hub

¿Tenés curiosidad sobre cómo automatizar el despliegue de tus imágenes al registro de Docker? Solo tenés que mirar nuestro artículo sobre automatización CI/CD.

Un Paso Más

Aquí tenés un ejemplo de archivo Docker-Compose para usar esta imagen. Solo creá un archivo docker-compose.yml y pegá el siguiente código.

version: "3.9"
services:
  builder:
    container_name: tu-proyecto
    image: whitecanvas/builder:1.0.4 #MACOS whitecanvas/builder-v8:1.0.4
    volumes:
      - ./:/media/
    extra_hosts:
      - "yoursite.local:192.168.1.6"
    command:  
      - sh
    tty: true
    networks:
      - project
networks:
  project:

Por último, ejecutá el siguiente comando en tu CLI para liberar al Kraken.

docker compose up -d

Conclusión

Esta imagen de Docker, disponible en Docker Hub, es un ejemplo de cómo se puede utilizar los recursos de manera eficiente. Con su tamaño compacto y un conjunto de herramientas completo, es ideal para ser desplegada en pipelines donde la velocidad y la eficiencia son clave.

El desglose detallado del Dockerfile debería ayudarte a desplegar tu proyecto de Alpine Linux usando PHP 8.2.10 y Node 18.17.1. ¡Buena suerte!

Si te resultó útil este post, lee nuestro blog para más tips, trucos y guías sobre WordPress.