The provided Docker image allows you to deploy your WordPress website in production with a powerful configuration, an integrated SMTP relay, and support for PHP Redis.
Key features:
- All images are based on inrage/docker-php
- Docker Hub
- Includes an SMTP server for outgoing emails
- Supports PHP Redis
- Advanced configuration for optimal performance
- Easy deployment and scalability with Docker
Supported tags:
- latest:
8.4(Dockerfile),8.4-redis(Dockerfile)8.3(Dockerfile),8.3-redis(Dockerfile)8.2(Dockerfile),8.2-redis(Dockerfile)8.1(Dockerfile),8.1-redis(Dockerfile)8.0(Dockerfile),8.0-redis(Dockerfile)7.4(Dockerfile),7.4-redis(Dockerfile)
- legacy:
7.2(Dockerfile)7.0(Dockerfile)5.6(Dockerfile)
To install, you need to either mount a directory into /var/www/html or customize the destination directory according to your needs. Here's how to proceed:
FROM inrage/docker-wordpress:8.4
COPY --chown=inr . .We are using a Docker Swarm configuration with Traefik as a reverse proxy. Here's an example of a docker-compose.yml file:
version: "3.8"
services:
redis:
hostname: mywebsite.redis
image: redis:7.2.0
healthcheck:
test: ["CMD-SHELL", "redis-cli --raw incr ping"]
networks:
- internal-network
command: redis-server --maxmemory 1024mb --maxmemory-policy allkeys-lru --appendonly yes
environment:
TZ: "Europe/Paris"
volumes:
- /etc/localtime:/etc/localtime:ro
- redis_data:/data
web:
image: inrage/mycustomimage
networks:
database:
traefik-public:
internal-network:
environment:
WORDPRESS_DB_HOST: db-master.db
WORDPRESS_DB_USER: mywebsite
WORDPRESS_DB_PASSWORD: "mywebsitepassword"
WORDPRESS_DB_NAME: mywebsite
WORDPRESS_TABLE_PREFIX: gr_
WORDPRESS_CONFIG_EXTRA: |
define( 'DISALLOW_FILE_MODS', true );
define( 'WP_MEMORY_LIMIT', '512M' );
define( 'WP_REDIS_HOST', 'mywebsite.redis');
TZ: "Europe/Paris"
volumes:
- /host/website/mywebsite/uploads:/var/www/html/wp-content/uploads
deploy:
replicas: 1
labels:
- traefik.enable=true
- traefik.docker.network=traefik-public
- traefik.constraint-label=traefik-public
- traefik.http.routers.mywebsite-http.rule=Host(`www.inrage.fr`, `inrage.fr`)
- traefik.http.routers.mywebsite-http.entrypoints=http
- traefik.http.routers.mywebsite-http.middlewares=https-redirect
- traefik.http.routers.mywebsite-https.rule=Host(`www.inrage.fr`, `inrage.fr`)
- traefik.http.routers.mywebsite-https.entrypoints=https
- traefik.http.routers.mywebsite-https.tls=true
- traefik.http.routers.mywebsite-https.tls.certresolver=le
- traefik.http.services.mywebsite.loadbalancer.server.port=80
volumes:
redis_data:
networks:
internal-network:
database:
external: true
traefik-public:
external: true| Variable | Description | Default |
|---|---|---|
WORDPRESS_NO_CREATE_CONFIG |
Do not create a config file | false |
WORDPRESS_DB_HOST |
Database host | mysql |
WORDPRESS_DB_USER |
Database user | example username |
WORDPRESS_DB_PASSWORD |
Database password | example password |
WORDPRESS_DB_NAME |
Database name | wordpress |
WORDPRESS_TABLE_PREFIX |
Database table prefix | wp_ |
WORDPRESS_DEBUG |
Enable debug mode | false |
WORDPRESS_CONFIG_EXTRA |
Additional configuration | empty |
WORDPRESS_DB_CHARSET |
Database charset | utf8 |
WORDPRESS_DB_COLLATE |
Database collate | empty |
WORDPRESS_AUTH_KEY |
Authentication key | empty |
WORDPRESS_SECURE_AUTH_KEY |
Secure authentication key | empty |
WORDPRESS_LOGGED_IN_KEY |
Logged in key | empty |
WORDPRESS_NONCE_KEY |
Nonce key | empty |
WORDPRESS_AUTH_SALT |
Authentication | |
WORDPRESS_SECURE_AUTH_SALT |
Secure authentication salt | empty |
WORDPRESS_LOGGED_IN_SALT |
Logged in salt | empty |
WORDPRESS_NONCE_SALT |
Nonce salt | empty |
For WORDPRESS_NO_CREATE_CONFIG: Do not create a new configuration file (default: false)
By default, the image will use a new configuration file which is generated at runtime and after you can use WordPress environnement.
If you want to use your own configuration file, set this variable to true.
For WORDPRESS_CONFIG_EXTRA, you can use the following variables:
WORDPRESS_CONFIG_EXTRA: |
define( 'DISALLOW_FILE_MODS', true );
define( 'WP_MEMORY_LIMIT', '511M' );
define( 'WP_REDIS_HOST', 'mysite.redis');Refer to the inrage/docker-php documentation for more information.
INRAGE_USER_ID: UID of the user to run the application as (default: 1000)INRAGE_GROUP_ID: GID of the user to run the application as (default: 1000)
wp: WordPress CLIsr: allow you to replace in the database (wp search-replace $1 $2 --precise --all-tables --skip-columns=guid)