Docker WordPress images optimized for production (Redis, SMTP Relay, rootless)
10K+
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:
Supported tags:
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)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.3
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)Content type
Image
Digest
sha256:0de5e4544…
Size
258.5 MB
Last updated
28 days ago
docker pull inrage/docker-wordpress:8.4-redis