# Apache en Docker # Instalar apache y php ## Requisitos - [Docker Engine](https://wiki.pablomp.es/books/docker-engine/page/instalar-docker-engine "Instalar Docker Engine") - [Nginx proxy manager](https://wiki.pablomp.es/books/nginx-proxy-manager/page/instalar-nginx-proxy-manager "Instalar nginx proxy manager") - Un dominio/subdominio ## Instalación Crear una carpeta para almacenar el contenedor de Docker `mkdir -p docker/apache_server`, dentro de esta carpeta creamos un archivo llamado `docker-compose.yml` con: ```yaml services: web: image: php:8.1-apache restart: unless-stopped ports: - "8080:80" volumes: - ./public:/var/www/html ``` Una vez creado ejecutar: ```bash docker compose up -d ``` Crear el contenido de la pagina en la carpeta `public`. # Instalar apache, php y mariadb ## Requisitos - [Docker Engine](https://wiki.pablomp.es/books/docker-engine/page/instalar-docker-engine "Instalar Docker Engine") - [Nginx proxy manager](https://wiki.pablomp.es/books/nginx-proxy-manager/page/instalar-nginx-proxy-manager "Instalar nginx proxy manager") - Un dominio/subdominio ## Instalación Crear una carpeta para almacenar el contenedor de Docker `mkdir -p docker/apache_server`, dentro de esta carpeta creamos un archivo llamado `docker-compose.yml` con: ```yaml #apache php y sql services: web: build: context: . dockerfile: Dockerfile restart: unless-stopped ports: - "8080:80" volumes: - ./public:/var/www/html networks: - my_network depends_on: - db db: image: mariadb:latest restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: mydatabase MYSQL_USER: myuser MYSQL_PASSWORD: mypassword volumes: - db_data:/var/lib/mysql networks: - my_network volumes: db_data: networks: my_network: driver: bridge ``` Crear `Dockerfile` para instalar los módulos de php. ```bash # Usa la imagen base de PHP con Apache FROM php:8.1-apache # Instala las extensiones necesarias RUN docker-php-ext-install mysqli # Habilita mod_rewrite de Apache si es necesario RUN a2enmod rewrite ``` Una vez creado ejecutar: ```bash docker compose up -d ``` Crear el contenido de la pagina en la carpeta `public`. **Si te quieres conectar a la base de datos:** ```bash # Instalar cliente sudo apt install mariadb-client # Obtener la informacion del contenedor sudo docker ps -a sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' id_contenedor_mariadb # Conectarse mysql -u usuario -p'password' -h ip ``` # index de prueba ```php