sábado, 21 de junio de 2025

Docker Apache: Creación de Host Virtuales

FROM ubuntu:latest

RUN apt-get update && apt-get install -y apache2

COPY ./apache-config /etc/apache2/sites-available/

RUN a2ensite mi_primer_sitio.conf && a2dissite 000-default.conf

EXPOSE 80

CMD ["apache2ctl", "-D", "FOREGROUND"]



Para configurar hosts virtuales de Apache dentro de un contenedor Docker, permitiendo el acceso a carpetas específicas en el host, se deben seguir estos pasos: crear un Dockerfile, definir los hosts virtuales en la configuración de Apache, mapear los directorios del host al contenedor y, finalmente, ejecutar el contenedor. 
Pasos detallados:
  1. Crear un Dockerfile:
Este archivo define la imagen de Docker que contendrá Apache y su configuración. 
Code
    FROM ubuntu:latest        RUN apt-get update && apt-get install -y apache2        COPY ./apache-config /etc/apache2/sites-available/        RUN a2ensite mi_primer_sitio.conf && a2dissite 000-default.conf        EXPOSE 80        CMD ["apache2ctl", "-D", "FOREGROUND"]
  1. Definir los hosts virtuales en Apache: 
En el directorio /apache-config (que se copia al contenedor), se crean archivos de configuración para cada host virtual, como mi_primer_sitio.conf. 
Code
    <VirtualHost *:80>        ServerAdmin webmaster@example.com        DocumentRoot /var/www/mi_primer_sitio        ServerName www.example.com        ErrorLog ${APACHE_LOG_DIR}/error.log        CustomLog ${APACHE_LOG_DIR}/access.log combined            <Directory /var/www/mi_primer_sitio>            Require all granted        </Directory>    </VirtualHost>
Se debe crear la estructura de directorios dentro del contenedor (/var/www/mi_primer_sitio) y mapearla a una carpeta en el host. 
  1. Mapear directorios del host al contenedor:
Al ejecutar el contenedor, se utiliza la opción -v para mapear un directorio del host a uno dentro del contenedor. Por ejemplo, para mapear /home/user/sitio1 del host a /var/www/mi_primer_sitio en el contenedor, se usa: 
Code
    docker run -d -p 8080:80 -v /home/user/sitio1:/var/www/mi_primer_sitio mi_imagen_docker
Esto permite que Apache en el contenedor sirva archivos desde la carpeta sitio1 en el host.
  1. Construir y ejecutar la imagen:
Primero, se construye la imagen Docker usando el Dockerfile: 
Code
    docker build -t mi_imagen_docker .
Luego, se ejecuta el contenedor con el mapeo de volúmenes: 
Code
    docker run -d -p 8080:80 -v /home/user/sitio1:/var/www/mi_primer_sitio mi_imagen_docker
Esto expone el puerto 80 del contenedor al puerto 8080 del host, y mapea la carpeta /home/user/sitio1 del host a la ruta /var/www/mi_primer_sitio del contenedor. Se pueden agregar más mapeos de volúmenes para otros hosts virtuales.
  1. Configuración del nombre de host:
Es importante que el nombre de host definido en el archivo de configuración (ServerName) coincida con la configuración DNS o con entradas en el archivo /etc/hosts del sistema donde se accederá al contenedor, o usar el indicador --hostname al ejecutar el contenedor. 
Este video muestra cómo crear host virtuales en Docker con Apache:

No hay comentarios:

Publicar un comentario