# /opt/stacks/wordpress/docker-compose.yml services: # ── MariaDB ────────────────────────────── db: container_name: wordpress-db image: mariadb:10.11 restart: unless-stopped environment: TZ: Europe/Madrid MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}' MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: '${MYSQL_PASSWORD}' volumes: - wp_db:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 5 start_period: 30s networks: [wp_net] # ── Redis — cache d'objectes ───────────── # Nota: Redis és volàtil per defecte — la cache es perd en reiniciar. # Per a WordPress és acceptable (es reconstrueix automàticament). redis: container_name: wordpress-redis image: redis:7-alpine restart: unless-stopped environment: TZ: Europe/Madrid healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: [wp_net] # ── WordPress ──────────────────────────── wordpress: container_name: wordpress image: wordpress:6-apache restart: unless-stopped environment: TZ: Europe/Madrid # Connexió a MariaDB WORDPRESS_DB_HOST: db WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: '${MYSQL_PASSWORD}' # Claus de seguretat — les 8 obligatòries # Genera-les a: https://api.wordpress.org/secret-key/1.1/salt/ WORDPRESS_AUTH_KEY: '${WP_AUTH_KEY}' WORDPRESS_SECURE_AUTH_KEY: '${WP_SECURE_AUTH_KEY}' WORDPRESS_LOGGED_IN_KEY: '${WP_LOGGED_IN_KEY}' WORDPRESS_NONCE_KEY: '${WP_NONCE_KEY}' WORDPRESS_AUTH_SALT: '${WP_AUTH_SALT}' WORDPRESS_SECURE_AUTH_SALT: '${WP_SECURE_AUTH_SALT}' WORDPRESS_LOGGED_IN_SALT: '${WP_LOGGED_IN_SALT}' WORDPRESS_NONCE_SALT: '${WP_NONCE_SALT}' # Configuració addicional via wp-config WORDPRESS_CONFIG_EXTRA: | define('WP_REDIS_HOST', 'redis'); define('WP_REDIS_PORT', 6379); define('WP_CACHE', true); define('WP_HOME', '${WP_URL}'); define('WP_SITEURL', '${WP_URL}'); volumes: - wp_data:/var/www/html ports: - "8086:80" depends_on: db: condition: service_healthy redis: condition: service_healthy # Afegit — WordPress necessita Redis disponible networks: [wp_net, shared_net] volumes: wp_db: wp_data: networks: wp_net: driver: bridge shared_net: external: true name: shared_net