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.