viernes, 20 de junio de 2025

Montar las carpetas public_html dentro del contenedor docker_apache2

 


y despues como hago para que los sitios que cada usuario tiene en /home/usuario1/public_html sean visibles desde el docker_Apache2 sean vistos desde el contenedor de apache2


Respuesta

Para que los sitios web que cada usuario tiene en su carpeta /home/usuario1/public_html sean visibles desde el contenedor docker_apache2, necesitas hacer dos cosas clave:


✅ 1. Montar las carpetas public_html dentro del contenedor

Ya que Docker no permite usar comodines (*) directamente en volumes, la forma más práctica es montar todo el directorio /home dentro del contenedor.

En tu docker-compose.yml:

volumes:
  - /home:/home:ro

Esto hace que el contenedor pueda acceder a:

/home/usuario1/public_html
/home/usuario2/public_html
...

✅ 2. Configurar Apache para servir esas carpetas

Tienes dos opciones:


🔹 Opción A: Usar AliasMatch (dinámico, recomendado para muchos usuarios)

En tu archivo de configuración de Apache (por ejemplo, httpd.conf o empresaX.conf):

AliasMatch ^/([^/]+)(/.*)?$ /home/$1/public_html$2

<DirectoryMatch "^/home/[^/]+/public_html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</DirectoryMatch>

Esto permite que accedas a los sitios así:

http://localhost/usuario1 → /home/usuario1/public_html
http://localhost/usuario2 → /home/usuario2/public_html

🔹 Opción B: Crear un VirtualHost por usuario (más control, pero más trabajo)

Ejemplo de archivo /home/apache2/usuario1.conf:

<VirtualHost *:80>
    ServerName usuario1.local
    DocumentRoot /home/usuario1/public_html
    <Directory /home/usuario1/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Y asegúrate de que esté montado en /etc/apache2/sites-available/ dentro del contenedor y que tu httpd.conf incluya:

IncludeOptional /etc/apache2/sites-available/*.conf

🔐 Permisos

Asegúrate de que los archivos sean legibles por Apache:

chmod -R o+r /home/*/public_html

🚀 Resultado

Con esto, los sitios de cada usuario serán accesibles desde el contenedor Apache, ya sea por rutas como:

  • http://localhost/usuario1
  • o por dominios personalizados como http://usuario1.local (si configuras DNS o /etc/hosts).

¿Quieres que te genere automáticamente un archivo de configuración para un usuario específico (usuario1.conf) y actualice tu docker-compose.yml?

No hay comentarios:

Publicar un comentario