sábado, 21 de junio de 2025

Docker Apache 2 con pagina de inicio y usuarios en public_html

 



hacer un doker contenedor de apache en linux que haga lo siguiente: Montar los archivos .conf desde /home/docker_apache2/ al contenedor. Montar /home para acceder a los public_html de los usuarios. Configurar Apache para incluir esos .conf y servir los sitios. La pagina principal de apache que recibe el cuando lo cosultan esta en /home/projects/pagina_inicio. HAcer el dockerfile y el docker-compose y los comandos que debo ejecutar para que funcione


Respuesta

Perfecto, vamos a crear un entorno con Docker que cumpla con los siguientes requisitos:


Objetivos

  1. Montar archivos .conf desde /home/docker_apache2/ al contenedor.
  2. Montar /home para acceder a los public_html de los usuarios.
  3. Configurar Apache para incluir esos .conf y servir los sitios.
  4. Servir la página principal desde /home/projects/pagina_inicio.

📁 Estructura de directorios esperada en el host

/home/
├── docker_apache2/
│   └── sitios.conf (y otros .conf)
├── projects/
│   └── pagina_inicio/
│       └── index.html
├── usuario1/
│   └── public_html/
│       └── index.html
├── usuario2/
│   └── public_html/
│       └── index.html

🐳 Dockerfile

FROM httpd:2.4

# Copiar configuración base
COPY ./default.conf /usr/local/apache2/conf/extra/default.conf

# Incluir todos los .conf personalizados
RUN echo "IncludeOptional conf/extra/default.conf" >> /usr/local/apache2/conf/httpd.conf \
 && echo "IncludeOptional /usr/local/apache2/conf/sites-enabled/*.conf" >> /usr/local/apache2/conf/httpd.conf

# Crear carpeta para los .conf montados
RUN mkdir -p /usr/local/apache2/conf/sites-enabled

⚙️ default.conf (en el mismo directorio que el Dockerfile)

<VirtualHost *:80>
    DocumentRoot "/home/projects/pagina_inicio"
    <Directory "/home/projects/pagina_inicio">
        Require all granted
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
</VirtualHost>

🧩 docker-compose.yml

version: '3.8'

services:
  apache:
    build: .
    container_name: docker_apache2
    ports:
      - "80:80"
    volumes:
      - /home:/home:ro
      - /home/docker_apache2/:/usr/local/apache2/conf/sites-enabled/:ro

Pasos para ejecutar

  1. Ubica los archivos:

    • Guarda el Dockerfile, default.conf y docker-compose.yml en una carpeta, por ejemplo: /home/docker_apache2_project/.
  2. Desde esa carpeta, ejecuta:

   cd /home/docker_apache2_project/
   docker-compose up --build -d
  1. Verifica en el navegador:
    • Abre http://localhost y deberías ver la página de inicio desde /home/projects/pagina_inicio.

🛠️ ¿Qué más necesitas?

  • ¿Quieres que te genere un ejemplo de .conf para un usuario con public_html?
  • ¿Te gustaría que te cree un script para automatizar la creación de los .conf por usuario?

Puedo ayudarte con eso también.

No hay comentarios:

Publicar un comentario