Setup Wordpress + Redis avec Docker

Ma stack de développement Wordpress avec Docker et Redis en bonus

Ceci est mon setup de développement Wordpress avec Docker et Redis en bonus. Je suis un utilisateur Fedora Linux, mais ça devrait fonctionner avec tout autre OS.

Structure des répertoires

Le projet Wordpress sera organisé comme ceci :

./app-name/db
  /redis
  /wordpress
  /Dockerfile
  /docker-compose.yml

Dockerfile

Le docker compose à partir de l’image officielle de Wordpress Docker fonctionnerait, mais afin d’utiliser l’extension Redis, nous avons besoin que l’extension PHP pecl redis soit installée. Pour ce faire, nous construisons une nouvelle image à partir de l’image officielle.

FROM wordpress

# Install Redis extension
RUN apt-get update && apt-get install -y \
  && pecl install redis \
  && docker-php-ext-enable redis

# Add permission handling (use your Fedora user's UID/GID)
ARG USER_ID=1000
ARG GROUP_ID=1000
RUN usermod -u ${USER_ID} www-data && groupmod -g ${GROUP_ID} www-data

# Ensure the web server can write to the WordPress directory
RUN chown -R www-data:www-data /var/www/html

Docker compose

services:

  wordpress:
    #image: wordpress
    build: ./wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - ./wordpress:/var/www/html
    depends_on:
      - db

  redis:
    image: redis:latest
    hostname: redis
    container_name: redis
    restart: always
    expose:
      - 6379
    command:
      - redis-server
      - --save 60 1
      - --loglevel warning
      - --maxmemory 128mb
      - --maxmemory-policy allkeys-lru
    volumes:
      - ./redis:/var/lib/redis
      - ./redis/data:/data
      #- ./redis.conf:/usr/local/etc/redis/redis.conf
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - ./db:/var/lib/mysql

  volumes:
  wordpress:
  db:
  redis:

wp-config.php

Ajouter ces constantes au fichier wp-config.php :

define('FS_METHOD', 'direct');
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', '6379');

La stack peut être démarrée avec docker compose up.


More like this