Dockerfile para Apache con PHP
Dockerfile para Apache con PHP y phpMyAdmin. Aquí tienes varias opciones:
Opción 1: Dockerfile desde Ubuntu (Más control)
# Dockerfile para Apache con PHP y phpMyAdmin
FROM ubuntu:20.04
# Evitar preguntas interactivas durante la instalación
ENV DEBIAN_FRONTEND=noninteractive
# Actualizar e instalar Apache, PHP y extensiones necesarias
RUN apt-get update && \
apt-get install -y \
apache2 \
php \
php-mysql \
php-curl \
php-json \
php-mbstring \
php-xml \
php-zip \
php-gd \
php-gettext \
wget \
unzip && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Descargar e instalar phpMyAdmin
RUN wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip -O /tmp/phpmyadmin.zip && \
unzip /tmp/phpmyadmin.zip -d /tmp/ && \
mv /tmp/phpMyAdmin-5.1.1-all-languages /var/www/html/phpmyadmin && \
rm /tmp/phpmyadmin.zip
# Crear directorio de configuración para phpMyAdmin
RUN mkdir -p /var/www/html/phpmyadmin/tmp && \
chmod 777 /var/www/html/phpmyadmin/tmp
# Copiar archivo de configuración personalizado para phpMyAdmin
COPY config.inc.php /var/www/html/phpmyadmin/
# Habilitar módulos de Apache
RUN a2enmod rewrite
# Exponer puerto 80
EXPOSE 80
# Comando para iniciar Apache
CMD ["apache2ctl", "-D", "FOREGROUND"]Opción 2: Usando imagen oficial de PHP-Apache (Recomendada)
# Usar imagen oficial de PHP con Apache
FROM php:8.0-apache
# Instalar dependencias del sistema y extensiones de PHP
RUN apt-get update && \
apt-get install -y \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip \
wget \
&& docker-php-ext-install \
pdo_mysql \
mysqli \
gd \
mbstring \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Habilitar mod_rewrite de Apache
RUN a2enmod rewrite
# Descargar e instalar phpMyAdmin
RUN wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip -O /tmp/phpmyadmin.zip && \
unzip /tmp/phpmyadmin.zip -d /var/www/html/ && \
mv /var/www/html/phpMyAdmin-5.1.1-all-languages /var/www/html/phpmyadmin && \
rm /tmp/phpmyadmin.zip
# Crear directorio temporal para phpMyAdmin
RUN mkdir -p /var/www/html/phpmyadmin/tmp && \
chmod 777 /var/www/html/phpmyadmin/tmp
# Copiar configuración personalizada
COPY config.inc.php /var/www/html/phpmyadmin/
# Cambiar permisos del directorio web
RUN chown -R www-data:www-data /var/www/html
# Exponer puerto
EXPOSE 80
# Comando por defecto (ya viene en la imagen base)Archivo de configuración para phpMyAdmin
Crea un archivo config.inc.php en el mismo directorio que el Dockerfile:
<?php
/* Servidor: base de datos MySQL */
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'db'; // Nombre del servicio de base de datos si usas Docker Compose
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;
/* Configuración general */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
$cfg['PmaAbsoluteUri'] = '/phpmyadmin/';
$cfg['TempDir'] = '/var/www/html/phpmyadmin/tmp';
/* Configuración de sesión */
$cfg['SessionSavePath'] = '/var/www/html/phpmyadmin/tmp';
/* Configuración de seguridad */
$cfg['blowfish_secret'] = 'mi_clave_secreta_muy_larga_aqui_1234567890';
?>Opción 3: Con Docker Compose (Recomendado para desarrollo)
Crea un archivo docker-compose.yml:
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
- ./phpmyadmin-config.php:/var/www/html/phpmyadmin/config.inc.php
depends_on:
- db
environment:
- PMA_HOST=db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
db_data:.dockerignore
Crea un archivo .dockerignore:
.git
.gitignore
README.md
docker-compose.yml
*.log
.DS_StoreComandos para construir y ejecutar
Para la Opción 1 o 2:
# Construir la imagen
docker build -t apache-phpmyadmin .
# Ejecutar el contenedor
docker run -d -p 8080:80 --name my-apache-phpmyadmin apache-phpmyadminPara la Opción 3 (Docker Compose):
# Iniciar todos los servicios
docker-compose up -d
# Ver logs
docker-compose logs -f
# Detener servicios
docker-compose downEstructura de archivos recomendada
proyecto/
├── Dockerfile
├── docker-compose.yml
├── config.inc.php
├── .dockerignore
└── html/
└── index.php (opcional)Verificación
Una vez ejecutado, puedes acceder a:
Apache: http://localhost:8080
phpMyAdmin: http://localhost:8080/phpmyadmin
Comentarios
Publicar un comentario