Crear los archivos dockerfile, docker-compose.yml y httpd.conf, mostrarme que permisos debo dar en bash en el host, y como ejecutar los archivos de docker, el contenedor se ejecuta desde /home/projects/docker_apache2. Adicionar el manejo con virtual-hosts, donde los archivos .conf estan en la ruta /home/rojects/docker_apache2/sites/, por ejemplo: /home/rojects/docker_apache2/sites/usuario1.conf /home/rojects/docker_apache2/sites/usuario2.conf /home/rojects/docker_apache2/sites/usuario3.conf
Intenté crear los archivos directamente en /home/projects/docker_apache2, pero ocurrió un error de permiso denegado al intentar escribir en esa ruta. Esto es común si no se tienen privilegios de superusuario o si el entorno no permite escribir en directorios del sistema.
✅ Aquí tienes una guía completa para hacerlo manualmente:
1. Estructura de directorios esperada
/home/projects/docker_apache2/
├── Dockerfile
├── docker-compose.yml
├── httpd.conf
├── setup_and_run.sh
└── sites/
├── usuario1.conf
├── usuario2.conf
└── usuario3.conf
📄 Dockerfile
FROM httpd:2.4
# Habilitar módulos necesarios y cargar virtual hosts
RUN apt-get update && apt-get install -y vim && \
sed -i '/^#LoadModule rewrite_module/s/^#//' /usr/local/apache2/conf/httpd.conf && \
echo "IncludeOptional conf/sites/*.conf" >> /usr/local/apache2/conf/httpd.conf
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
COPY ./sites/ /usr/local/apache2/conf/sites/
📄 docker-compose.yml
version: '3'
services:
apache:
container_name: Docker_apache2
build: .
ports:
- "80:80"
volumes:
- /home/projects/Pagina_Inicio/:/usr/local/apache2/htdocs/
- /home/usuario1/public_html/:/home/usuario1/public_html/
- /home/usuario2/public_html/:/home/usuario2/public_html/
- /home/usuario3/public_html/:/home/usuario3/public_html/
- ./sites/:/usr/local/apache2/conf/sites/
📄 httpd.conf
ServerRoot "/usr/local/apache2"
Listen 80
LoadModule dir_module modules/mod_dir.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
User daemon
Group daemon
ServerAdmin you@example.com
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
UserDir public_html
<IfModule mod_userdir.c>
UserDir enabled usuario1 usuario2 usuario3
</IfModule>
<Directory "/home/*/public_html">
AllowOverride None
Options Indexes FollowSymLinks
Require all granted
</Directory>
DirectoryIndex index.html
IncludeOptional conf/sites/*.conf
📄 Ejemplo de archivo sites/usuario1.conf
<VirtualHost *:80>
ServerName usuario1.local
DocumentRoot "/home/usuario1/public_html"
<Directory "/home/usuario1/public_html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
Repite esto para usuario2.conf y usuario3.conf, cambiando el nombre y ruta.
🛠️ Script setup_and_run.sh
#!/bin/bash
# Asignar permisos
chmod o+rx /home/projects/Pagina_Inicio/
chmod -R o+r /home/projects/Pagina_Inicio/*
for user in usuario1 usuario2 usuario3; do
chmod o+rx /home/$user/public_html/
chmod -R o+r /home/$user/public_html/*
done
# Ir al directorio del proyecto
cd /home/projects/docker_apache2
# Construir y ejecutar el contenedor
docker-compose up --build -d
¿Quieres que te genere un archivo .zip con todos estos archivos listos para descargar y descomprimir?
No hay comentarios:
Publicar un comentario