1. ¿Qué es Docker?
Docker es una plataforma que permite empaquetar aplicaciones y todas sus dependencias en contenedores, que son como máquinas virtuales ligeras. Esto garantiza que la aplicación funcione de la misma manera, independientemente del entorno.
2. Instalación de Docker
Primero, debes instalar Docker en tu sistema. Sigue las instrucciones según tu sistema operativo en la página oficial de Docker.
3. Configurar el proyecto
Crea una carpeta para tu proyecto, por ejemplo, docker-php-mysql
, y dentro de esta carpeta, crea los siguientes archivos:
- Dockerfile: Define la configuración de PHP y Apache.
- docker-compose.yml: Configura los servicios (PHP, MySQL, Apache).
- php.ini: Configura PHP si necesitas cambiar valores predeterminados.
4. Crear el archivo Dockerfile
Este archivo se encargará de configurar PHP y Apache.
# Imagen base con PHP 8.0 y Apache
FROM php:8.0-apache
# Instalación de extensiones de PHP
RUN docker-php-ext-install pdo pdo_mysql mysqli
# Copiar el archivo php.ini personalizado (opcional)
COPY php.ini /usr/local/etc/php/
# Habilitar mod_rewrite de Apache
RUN a2enmod rewrite
# Configurar el directorio de trabajo
WORKDIR /var/www/html
5. Crear el archivo docker-compose.yml
Este archivo es el corazón de nuestro ecosistema, que coordina los contenedores PHP, Apache y MySQL.
version: '3.8'
services:
php-apache:
build: .
container_name: php-apache
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
container_name: mysql-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: my_database
MYSQL_USER: user
MYSQL_PASSWORD: user_password
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
db_data:
6. Configurar el archivo php.ini
(opcional)
Si deseas personalizar la configuración de PHP, puedes crear un archivo php.ini
en la misma carpeta. Por ejemplo:
memory_limit = 256M
upload_max_filesize = 50M
post_max_size = 50M
7. Estructura de carpetas
Tu proyecto debería tener la siguiente estructura:
docker-php-mysql/
│
├── Dockerfile
├── docker-compose.yml
├── php.ini
└── src/ # Aquí va el código PHP que quieras ejecutar
8. Iniciar los contenedores
Desde la línea de comandos, navega a la carpeta de tu proyecto y ejecuta el siguiente comando:
docker-compose up -d
Esto creará e iniciará los contenedores en segundo plano. Para detener los contenedores, puedes usar:
docker-compose down
9. Acceder a la aplicación
Abre tu navegador y ve a http://localhost:8080
. Aquí deberías ver el contenido de tu carpeta src/
.
10. Conectar PHP con MySQL
Dentro de tu código PHP en la carpeta src/
, puedes conectarte a la base de datos MySQL utilizando las credenciales que definiste en el archivo docker-compose.yml
:
$dsn = 'mysql:host=db;dbname=my_database';
$username = 'user';
$password = 'user_password';
try {
$pdo = new PDO($dsn, $username, $password);
echo "Conexión exitosa a la base de datos.";
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
11. Conclusión
Con estos pasos, has creado un ecosistema de contenedores con Docker que incluye PHP 8.0, Apache y MySQL. Ahora puedes desarrollar tus aplicaciones PHP sin preocuparte por las configuraciones del entorno de desarrollo.