Wordpress
Wordpress is a free and open source content management system (CMS) for publishing and managing websites.
Configuration
services:
wordpress:
image: wordpress:latest
# Resolve the site's own domain to the Traefik container instead of the
# server's public IP. Loopback requests (REST API, WP-Cron, Site Health)
# otherwise depend on hairpin NAT, which times out on many hosts
# (cURL error 28). See https://github.com/Dokploy/templates/issues/128
command:
- bash
- -c
- |
if [ -n "$$WP_DOMAIN" ]; then
(
for i in $$(seq 1 60); do
TRAEFIK_IP="$$(getent hosts dokploy-traefik | awk '{print $$1; exit}')"
if [ -n "$$TRAEFIK_IP" ]; then
grep -q "[[:space:]]$$WP_DOMAIN\$$" /etc/hosts || echo "$$TRAEFIK_IP $$WP_DOMAIN" >> /etc/hosts
break
fi
sleep 2
done
) &
fi
exec docker-entrypoint.sh apache2-foreground
volumes:
- wp_app:/var/www/html
- ../files/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
environment:
WORDPRESS_DB_HOST: wp_db
WORDPRESS_DB_NAME: $DB_NAME
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: $DB_PASSWORD
WORDPRESS_DEBUG: ${WORDPRESS_DEBUG:-0}
WP_DOMAIN: ${WP_DOMAIN}
WORDPRESS_CONFIG_EXTRA: |
define('WP_MEMORY_LIMIT', '256M');
define('DISALLOW_FILE_EDIT', true);
depends_on:
wp_db:
condition: service_healthy
restart: unless-stopped
wp_db:
image: mysql:8.4
restart: unless-stopped
volumes:
- wp_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: $DB_PASSWORD
MYSQL_DATABASE: $DB_NAME
healthcheck:
test: ["CMD-SHELL", "exit | mysql -h localhost -P 3306 -u root -p$$MYSQL_ROOT_PASSWORD"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
volumes:
wp_app:
wp_data:[variables]
main_domain = "${domain}"
db_name = "wordpress"
db_user = "wordpress"
db_password = "${password:32}"
[config]
env = [
"WORDPRESS_DEBUG=0",
"DB_NAME=${db_name}",
"DB_USER=${db_user}",
"DB_PASSWORD=${db_password}",
"WP_DOMAIN=${main_domain}"
]
[[config.domains]]
serviceName = "wordpress"
port = 80
host = "${main_domain}"
[[config.mounts]]
filePath = "uploads.ini"
content = """upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
max_input_vars = 3000
"""Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICB3b3JkcHJlc3M6XG4gICAgaW1hZ2U6IHdvcmRwcmVzczpsYXRlc3RcbiAgICAjIFJlc29sdmUgdGhlIHNpdGUncyBvd24gZG9tYWluIHRvIHRoZSBUcmFlZmlrIGNvbnRhaW5lciBpbnN0ZWFkIG9mIHRoZVxuICAgICMgc2VydmVyJ3MgcHVibGljIElQLiBMb29wYmFjayByZXF1ZXN0cyAoUkVTVCBBUEksIFdQLUNyb24sIFNpdGUgSGVhbHRoKVxuICAgICMgb3RoZXJ3aXNlIGRlcGVuZCBvbiBoYWlycGluIE5BVCwgd2hpY2ggdGltZXMgb3V0IG9uIG1hbnkgaG9zdHNcbiAgICAjIChjVVJMIGVycm9yIDI4KS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Eb2twbG95L3RlbXBsYXRlcy9pc3N1ZXMvMTI4XG4gICAgY29tbWFuZDpcbiAgICAgIC0gYmFzaFxuICAgICAgLSAtY1xuICAgICAgLSB8XG4gICAgICAgIGlmIFsgLW4gXCIkJFdQX0RPTUFJTlwiIF07IHRoZW5cbiAgICAgICAgICAoXG4gICAgICAgICAgICBmb3IgaSBpbiAkJChzZXEgMSA2MCk7IGRvXG4gICAgICAgICAgICAgIFRSQUVGSUtfSVA9XCIkJChnZXRlbnQgaG9zdHMgZG9rcGxveS10cmFlZmlrIHwgYXdrICd7cHJpbnQgJCQxOyBleGl0fScpXCJcbiAgICAgICAgICAgICAgaWYgWyAtbiBcIiQkVFJBRUZJS19JUFwiIF07IHRoZW5cbiAgICAgICAgICAgICAgICBncmVwIC1xIFwiW1s6c3BhY2U6XV0kJFdQX0RPTUFJTlxcJCRcIiAvZXRjL2hvc3RzIHx8IGVjaG8gXCIkJFRSQUVGSUtfSVAgJCRXUF9ET01BSU5cIiA+PiAvZXRjL2hvc3RzXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgZmlcbiAgICAgICAgICAgICAgc2xlZXAgMlxuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICkgJlxuICAgICAgICBmaVxuICAgICAgICBleGVjIGRvY2tlci1lbnRyeXBvaW50LnNoIGFwYWNoZTItZm9yZWdyb3VuZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIHdwX2FwcDovdmFyL3d3dy9odG1sXG4gICAgICAtIC4uL2ZpbGVzL3VwbG9hZHMuaW5pOi91c3IvbG9jYWwvZXRjL3BocC9jb25mLmQvdXBsb2Fkcy5pbmlcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIFdPUkRQUkVTU19EQl9IT1NUOiB3cF9kYlxuICAgICAgV09SRFBSRVNTX0RCX05BTUU6ICREQl9OQU1FXG4gICAgICBXT1JEUFJFU1NfREJfVVNFUjogcm9vdFxuICAgICAgV09SRFBSRVNTX0RCX1BBU1NXT1JEOiAkREJfUEFTU1dPUkRcbiAgICAgIFdPUkRQUkVTU19ERUJVRzogJHtXT1JEUFJFU1NfREVCVUc6LTB9XG4gICAgICBXUF9ET01BSU46ICR7V1BfRE9NQUlOfVxuICAgICAgV09SRFBSRVNTX0NPTkZJR19FWFRSQTogfFxuICAgICAgICBkZWZpbmUoJ1dQX01FTU9SWV9MSU1JVCcsICcyNTZNJyk7XG4gICAgICAgIGRlZmluZSgnRElTQUxMT1dfRklMRV9FRElUJywgdHJ1ZSk7XG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHdwX2RiOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG5cbiAgd3BfZGI6XG4gICAgaW1hZ2U6IG15c3FsOjguNFxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgdm9sdW1lczpcbiAgICAgIC0gd3BfZGF0YTovdmFyL2xpYi9teXNxbFxuICAgIGVudmlyb25tZW50OlxuICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogJERCX1BBU1NXT1JEXG4gICAgICBNWVNRTF9EQVRBQkFTRTogJERCX05BTUVcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcImV4aXQgfCBteXNxbCAtaCBsb2NhbGhvc3QgLVAgMzMwNiAtdSByb290IC1wJCRNWVNRTF9ST09UX1BBU1NXT1JEXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuICAgICAgc3RhcnRfcGVyaW9kOiAzMHNcblxudm9sdW1lczpcbiAgd3BfYXBwOlxuICB3cF9kYXRhOlxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmRiX25hbWUgPSBcIndvcmRwcmVzc1wiXG5kYl91c2VyID0gXCJ3b3JkcHJlc3NcIlxuZGJfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJXT1JEUFJFU1NfREVCVUc9MFwiLFxuICBcIkRCX05BTUU9JHtkYl9uYW1lfVwiLFxuICBcIkRCX1VTRVI9JHtkYl91c2VyfVwiLFxuICBcIkRCX1BBU1NXT1JEPSR7ZGJfcGFzc3dvcmR9XCIsXG4gIFwiV1BfRE9NQUlOPSR7bWFpbl9kb21haW59XCJcbl1cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwid29yZHByZXNzXCJcbnBvcnQgPSA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcInVwbG9hZHMuaW5pXCJcbmNvbnRlbnQgPSBcIlwiXCJ1cGxvYWRfbWF4X2ZpbGVzaXplID0gNjRNXG5wb3N0X21heF9zaXplID0gNjRNXG5tZW1vcnlfbGltaXQgPSAyNTZNXG5tYXhfZXhlY3V0aW9uX3RpbWUgPSAzMDBcbm1heF9pbnB1dF92YXJzID0gMzAwMFxuXCJcIlwiICIKfQ==Links
Tags
cms
Version: latest