HAcer un paso a paso mas detallado para la pregunta y los pasos dados :Hacer que el public_html de los usuarios por ejemplo: /home/usuario1/public_html o /home/usuario2/public_html o /home/usuario3/public_html ... tengan acceso desde el contenedor de apache2 docker_apache2 a la salida a internet y se vean las paginas web que tienen en el public_html Posibles pasos: Paso 1: Para muchos usuarios montar todo el /home del host en el contenedor eso dentro del docker-compose.yml volume - /home:/home:ro Paso 2: Crear un VirtualHost por usuario (más control, pero más trabajo) crear archivo /home/apache2/usuario1.conf: ServerName usuario1.local DocumentRoot /home/usuario1/public_html Options Indexes FollowSymLinks AllowOverride All Require all granted Paso 3: 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 Paso 4: Permisos Asegúrate de que los archivos sean legibles por el contenedos del Apache: chmod -R o+r /home/*/public_html
Aquí tienes un paso a paso más detallado y claro para lograr que los directorios public_html de múltiples usuarios en el host sean accesibles desde un contenedor Docker que ejecuta Apache2, permitiendo así que sus páginas web sean visibles desde el exterior:
✅ Objetivo
Permitir que el contenedor docker_apache2 sirva contenido web desde los directorios /home/usuarioX/public_html del host.
🧩 Paso a Paso Detallado
🔹 Paso 1: Montar /home del host en el contenedor
Esto permite que Apache dentro del contenedor acceda a los archivos de los usuarios.
Archivo docker-compose.yml:
services:
apache2:
image: httpd:2.4
container_name: docker_apache2
ports:
- "80:80"
volumes:
- /home:/home:ro # Montaje en modo solo lectura
- ./sites:/etc/apache2/sites-available # Donde colocarás los VirtualHosts
🔸 Nota: Asegúrate de que el contenedor tenga acceso a los archivos necesarios, aunque sea en modo
ro(solo lectura).
🔹 Paso 2: Crear un VirtualHost por usuario
Esto permite que cada usuario tenga su propio subdominio o nombre local.
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>
🔸 Repite este paso para cada usuario (
usuario2,usuario3, etc.).
🔹 Paso 3: Incluir los VirtualHosts en Apache
Asegúrate de que Apache cargue los archivos .conf desde sites-available.
Dentro del contenedor, edita o asegúrate de que el archivo principal de configuración (httpd.conf o apache2.conf) contenga:
IncludeOptional /etc/apache2/sites-available/*.conf
🔸 Si usas Debian/Ubuntu, este archivo suele ser
apache2.conf. En Alpine o imágenes más ligeras, puede serhttpd.conf.
🔹 Paso 4: Permisos de archivos
Apache necesita poder leer los archivos de los usuarios.
En el host:
chmod -R o+r /home/*/public_html
chmod -R o+x /home/* /home/*/public_html
🔸 Esto da permisos de lectura y ejecución (necesarios para acceder a directorios) a "otros".
🔹 Paso 5: Configurar /etc/hosts para pruebas locales (opcional)
En tu máquina local (no en el contenedor), puedes mapear los dominios locales:
sudo nano /etc/hosts
Agrega:
127.0.0.1 usuario1.local
127.0.0.1 usuario2.local
🔹 Paso 6: Reiniciar Apache dentro del contenedor
Una vez montados los archivos y configurados los VirtualHosts:
docker exec -it docker_apache2 apachectl restart
¿Te gustaría que prepare un ejemplo completo de docker-compose.yml y un par de archivos .conf listos para copiar y pegar?
No hay comentarios:
Publicar un comentario