En este tutorial aprenderas a configurar Apache desde un contenedor de Docker

Ejecutar un contenedor de Apache con Docker

Para ejecutar un contenedor de Apache, use el siguiente comando:

docker run -dit --name myapache -p 8080:80 httpd

Verifique el estado de sus contenedores con:

docker ps

Añadir un sitio web al contenedor. Descargue una plantilla gratuita desde Free CSS.

Descomprima la plantilla en su escritorio o en la ubicación deseada.

Abra la consola y navegue al directorio donde extrajo la plantilla (por ejemplo, /home/usuario/Desktop/plantilla).

Detenga y elimine el contenedor anterior:

docker stop myapache
docker rm myapache

Para montar el directorio de la plantilla en el contenedor, ejecute el siguiente comando en Linux o Mac:

docker run -dit --name myapache -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd

En Windows, reemplace $PWD con ${PWD}:

docker run -dit --name myapache -p 8080:80 -v ${PWD}:/usr/local/apache2/htdocs/ httpd

Solucionar Error 403 Forbidden

Si encuentra un error 403 Forbidden, puede deberse a problemas de permisos en el directorio compartido. Para solucionarlo, cambie los permisos del directorio en el host:

sudo chmod -R a+rX "$PWD"

Intente volver a ejecutar el contenedor y verifique si el error persiste.

Organizar archivos en un directorio public_html

Para mantener separados los archivos de configuración y el código de su sitio, coloque todos los archivos en un directorio llamado public_html.

Cree un archivo Dockerfile en la misma ubicación que public_html:

public_html/
Dockerfile

Edite el archivo Dockerfile e incluya lo siguiente:

FROM httpd
COPY ./public_html/ /usr/local/apache2/htdocs/

Construya la imagen de Docker:

docker build -t mi-apache .

Ejecute un nuevo contenedor con la imagen personalizada:

docker run -dit --name myapache2 -p 4000:80 mi-apache

Visite localhost:4000 en su navegador para ver su sitio en funcionamiento.

Docker Compose

Para crear un archivo docker-compose que use docker

version: "3.9"
services:
  apache:
    image: httpd:latest
    container_name: myapache
    ports:
      - "3000:80"
    volumes:
      - .:/usr/local/apache2/htdocs

ejecuta luego:

docker compose up

o si en todo caso quieresmas orden puedes crear una carpeta www y colocar alli tu web:

.
├── docker-compose.yml
└── www
    └── index.html

y actualizas tu docker-compose.yml de esta forma:

version: "3.9"
services:
  apache:
    image: httpd:latest
    container_name: myapache
    ports:
      - "3000:80"
    volumes:
      - ./www:/usr/local/apache2/htdocs