Docker compose
Archivo docker-compose.yml
para WordPress con WooCommerce, incluyendo MySQL/MariaDB y configuración optimizada para ecommerce:
version: '3.8'
services:
db:
image: mariadb:10.6
container_name: wp_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- db_data:/var/lib/mysql
networks:
- wp_network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
wordpress:
build:
context: .
dockerfile: Dockerfile-wordpress
container_name: wp_app
restart: always
depends_on:
db:
condition: service_healthy
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
WORDPRESS_DB_NAME: ${DB_NAME}
PHP_MEMORY_LIMIT: 512M
PHP_UPLOAD_MAX_FILESIZE: 64M
volumes:
- wordpress_data:/var/www/html
- ./plugins:/var/www/html/wp-content/plugins
- ./themes:/var/www/html/wp-content/themes
- ./uploads:/var/www/html/wp-content/uploads
ports:
- "8080:80"
networks:
- wp_network
volumes:
db_data:
wordpress_data:
networks:
wp_network:
driver: bridge
Crea un archivo Dockerfile-wordpress
para personalizar WordPress:
FROM wordpress:php8.2-apache
# Instalar dependencias para WooCommerce
RUN apt-get update && apt-get install -y \
libzip-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd zip mysqli pdo_mysql opcache
# Configuración de PHP para ecommerce
COPY php.ini /usr/local/etc/php/conf.d/woocommerce.ini
Crea un php.ini
para optimización:
memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 600
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=200
Crea un .env
para las variables:
DB_ROOT_PASSWORD=your_root_password
DB_NAME=wordpress
DB_USER=wpuser
DB_PASSWORD=wppassword
Estructura de directorios:
├── docker-compose.yml
├── Dockerfile-wordpress
├── php.ini
├── .env
├── plugins/
├── themes/
└── uploads/
Para iniciar el stack:
- Crea los directorios necesarios:
mkdir -p plugins themes uploads
- Inicia los contenedores:
docker-compose up -d
- Accede a:
http://localhost:8080
Pasos post-instalación:
- Completar instalación de WordPress
- Instalar plugin WooCommerce
- Configurar permalinks (Settings > Permalinks)
- Habilitar SSL si es necesario (usando reverse proxy)
Comandos útiles:
- Ver logs:
docker-compose logs -f
- Detener:
docker-compose down
- Actualizar:
docker-compose pull && docker-compose up -d
Recomendaciones para producción:
- Agregar reverse proxy con Nginx/Apache para SSL
- Configurar backups periódicos
- Implementar cache (Redis/Memcached)
- Usar volumen para SSL certificates
- Monitorear recursos con cAdvisor o Portainer
Este setup incluye:
- Última versión de PHP 8.2
- GD Library para manejo de imágenes
- Optimizaciones de rendimiento para WooCommerce
- Volúmenes persistentes para datos
- Configuración de seguridad básica
- Red aislada para los servicios
¡Asegúrate de modificar las contraseñas en el archivo .env antes de implementar! 🔒