Docker se ha convertido en una solución popular para construir y desplegar aplicaciones en entornos de desarrollo y sistemas operativos. Debido a su efectividad y popularidad, algunos pueden preguntarse cómo construir una imagen Docker con Alpine Linux. Este post te va a dar la respuesta, paso a paso.
Construir una imagen Docker que sea a la vez liviana y completa en funcionalidades es un logro significativo en entornos de desarrollo web. Vamos a ampliar nuestra guía anterior para incluir el Dockerfile completo y explicar el razonamiento detrás de cada paso.
Esta imagen Docker, que suma apenas 34,7MB en su forma comprimida, es un claro contraste con los tamaños combinados de las imágenes de Node (381,8 MB) y Composer (46,23 MB), haciéndola una candidata ideal para un uso eficiente en pipelines.
Recorramos los pasos para construir una imagen Docker en Alpine Linux con PHP 8.2.10 y Node 18.17.1, uno por uno.
Cómo Construir una Imagen 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 que es reconocida por su pequeño tamaño.
Paso 2: Obteniendo lo Esencial
# Establecer zona horaria
RUN echo "UTC" > /etc/timezone
# Instalar herramientas esenciales
RUN apk add --no-cache zip unzip curl
En este paso, configuramos la zona horaria a UTC e instalamos herramientas esenciales como zip
, unzip
y curl
para operaciones básicas de archivos y transferencia de datos.
Paso 3: Instalando Bash
# Instalando bash
RUN apk add bash
RUN sed -i 's/bin/ash/bin/bash/g' /etc/passwd
Alpine Linux viene con ash
por defecto. En este paso, instalamos bash
para capacidades mejoradas de scripting y cambiamos la shell predeterminada a Bash.
Paso 4: Instalando PHP 8.2.10 y Node 18.17.1
# Instalar 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
Este paso instala PHP 8.2.10 y sus extensiones, junto con Node 18.17.1 y git
. Estos son críticos para tareas de desarrollo web moderno.
Paso 5: Instalando Composer 2.6.4
# 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 PHP. El script de instalación se descarga, se ejecuta y luego se elimina para mantener limpia la imagen.
Paso 6: Configurando PHP
# Configurar PHP
RUN mkdir -p /run/php/
RUN touch /run/php/php8.2-fpm.pid
Este paso prepara los directorios y archivos necesarios para el funcionamiento de PHP.
Paso 7: Finalizando el Dockerfile
# Exponer puerto 3000
EXPOSE 3000/tcp
# Establecer 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
Aquí está todo el código que necesitas para construir una imagen 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 en Docker Hub
¿Tenés curiosidad sobre cómo automatizar el despliegue de tus imágenes al registro de Docker? Solo revisá nuestro post sobre automatización CI/CD.
Un Extra
Aquí tenés un ejemplo de archivo Docker-Compose para utilizar esta imagen. Solo creá un archivo docker-compose.yml
y pegá el siguiente código.
version: "3.9"
services:
builder:
container_name: your-project
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:
Finalmente, ejecutá el siguiente comando en tu CLI para liberar al Kraken.
docker compose up -d
Conclusión
Esta imagen Docker, disponible en Docker Hub, es un testimonio de la utilización eficiente de recursos. Con su tamaño compacto y conjunto de herramientas completas, es perfecta para su despliegue en pipelines donde la rapidez y eficiencia son cruciales.
El desglose detallado del Dockerfile debería ayudarte a desplegar tu proyecto en Alpine Linux utilizando PHP 8.2.10 y Node 18.17.1. ¡Buena suerte!
Si encontraste este post útil, leé nuestro blog para más consejos, trucos y guías sobre WordPress.