mirror of
https://github.com/10h30/wordpress-caddy-docker.git
synced 2026-06-05 15:09:52 +09:00
Inititial Commit
This commit is contained in:
@@ -0,0 +1,30 @@
|
|||||||
|
## Caddy ##
|
||||||
|
SERVER_NAME = 10h30.net
|
||||||
|
|
||||||
|
WP_CLI_CACHE_DIR = /tmp
|
||||||
|
|
||||||
|
## Wordpress ##
|
||||||
|
WORDPRESS_DB_USER=siteuser
|
||||||
|
WORDPRESS_DB_PASSWORD=sitepassword
|
||||||
|
WORDPRESS_DB_NAME=wordpress
|
||||||
|
WORDPRESS_DB_HOST=db:3306
|
||||||
|
WORDPRESS_CONFIG_EXTRA=define('WP_REDIS_HOST','redis');
|
||||||
|
|
||||||
|
# Website Credentials
|
||||||
|
WORDPRESS_ADMIN_USER = admin
|
||||||
|
WORDPRESS_ADMIN_PASSWORD = thuanbuidepchai
|
||||||
|
WORDPRESS_ADMIN_EMAIL = admin@domain.com
|
||||||
|
|
||||||
|
# Blog Settings
|
||||||
|
WORDPRESS_TITLE = 'Blog Title Here'
|
||||||
|
WORDPRESS_PERMALINK_STRUCTURE = /%postname%/
|
||||||
|
WORDPRESS_THEME_TO_INSTALL = "kadence"
|
||||||
|
WORDPRESS_PLUGINS_TO_INSTALL = "redis-cache cache-enabler seo-by-rank-math"
|
||||||
|
|
||||||
|
## MYSQL ##
|
||||||
|
MYSQL_USER=siteuser
|
||||||
|
MYSQL_PASSWORD=sitepassword
|
||||||
|
MYSQL_DATABASE=wordpress
|
||||||
|
MYSQL_ROOT_PASSWORD=rootpassword
|
||||||
|
MYSQL_RANDOM_ROOT_PASSWORD=1
|
||||||
|
MARIADB_RANDOM_ROOT_PASSWORD=1
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
(cache_enabler) {
|
||||||
|
@cache_ena {
|
||||||
|
not header_regexp Cookie "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in"
|
||||||
|
not path_regexp "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(index)?.xml|[a-z0-9-]+-sitemap([0-9]+)?.xml)"
|
||||||
|
not method POST
|
||||||
|
not expression {query} != ''
|
||||||
|
}
|
||||||
|
|
||||||
|
route @cache_ena {
|
||||||
|
try_files /wp-content/cache/cache-enabler/{host}{uri}/https-index.html /wp-content/cache/cache-enabler/{host}{uri}/index.html {path} {path}/index.php?{query}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(wordpress_security) {
|
||||||
|
@forbidden {
|
||||||
|
not path /wp-includes/ms-files.php
|
||||||
|
path /wp-admin/includes/*.php
|
||||||
|
path /wp-includes/*.php
|
||||||
|
path /wp-config.php
|
||||||
|
path /wp-content/uploads/*.php
|
||||||
|
path /.user.ini
|
||||||
|
path /wp-content/debug.log
|
||||||
|
}
|
||||||
|
respond @forbidden "Access denied" 403
|
||||||
|
}
|
||||||
|
|
||||||
|
{$SERVER_NAME} {
|
||||||
|
root * /var/www/html
|
||||||
|
encode zstd gzip
|
||||||
|
|
||||||
|
# Serve WordPress PHP files through php-fpm:
|
||||||
|
php_fastcgi wordpress:9000
|
||||||
|
|
||||||
|
# Enable the static file server:
|
||||||
|
file_server {
|
||||||
|
precompressed gzip
|
||||||
|
}
|
||||||
|
header / {
|
||||||
|
X-Frame-Options "SAMEORIGIN"
|
||||||
|
X-Content-Type-Options "nosniff"
|
||||||
|
}
|
||||||
|
|
||||||
|
#import cache_enabler
|
||||||
|
#import wordpress_security
|
||||||
|
}
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
version: "3.9"
|
||||||
|
services:
|
||||||
|
caddy:
|
||||||
|
image: caddy:2.7.6-alpine
|
||||||
|
container_name: caddy
|
||||||
|
env_file: .env
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
- 443:443/udp
|
||||||
|
volumes:
|
||||||
|
- ./caddy/caddy_data:/data
|
||||||
|
- ./caddy/caddy_config:/config
|
||||||
|
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||||
|
- ./wordpress/html:/var/www/html
|
||||||
|
|
||||||
|
wordpress:
|
||||||
|
image: wordpress:fpm-alpine
|
||||||
|
container_name: wordpress
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
- redis
|
||||||
|
volumes:
|
||||||
|
- ./wordpress/html:/var/www/html
|
||||||
|
- ./wordpress/custom.ini:/usr/local/etc/php/conf.d/custom.ini
|
||||||
|
env_file: .env
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mariadb:10.11.6-jammy
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./wordpress/mysql:/var/lib/mysql
|
||||||
|
env_file: .env
|
||||||
|
|
||||||
|
wpcli:
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
- wordpress
|
||||||
|
image: wordpress:cli
|
||||||
|
entrypoint: wp
|
||||||
|
command: "--info"
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- ./wordpress/html:/var/www/html
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:6.2.14
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
#elastic:
|
||||||
|
# image: elasticsearch:7.17.13
|
||||||
|
# restart: always
|
||||||
|
# environment:
|
||||||
|
# discovery.type: single-node
|
||||||
|
# xpack.security.enabled: false
|
||||||
|
# ports:
|
||||||
|
# - 9200:9200
|
||||||
|
# volumes:
|
||||||
|
# - ./elastic:/usr/share/elasticsearch/data
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
memory_limit=2048M
|
||||||
|
max_execution_time=300
|
||||||
|
php_enable_xdebug=false
|
||||||
|
debug=false
|
||||||
|
upload_max_filesize=16M
|
||||||
Executable
+73
@@ -0,0 +1,73 @@
|
|||||||
|
SERVER_NAME=$(sed -e 's#.*=\(\)#\1#' <<< "$(awk '/SERVER_NAME/{print}' .env)" | xargs)
|
||||||
|
WORDPRESS_TITLE=$(sed -e 's#.*=\(\)#\1#' <<< "$(awk '/WORDPRESS_TITLE/{print}' .env)" | xargs)
|
||||||
|
WORDPRESS_USER=$(sed -e 's#.*=\(\)#\1#' <<< "$(awk '/WORDPRESS_ADMIN_USER/{print}' .env)" | xargs)
|
||||||
|
WORDPRESS_EMAIL=$(sed -e 's#.*=\(\)#\1#' <<< "$(awk '/WORDPRESS_ADMIN_EMAIL/{print}' .env)" | xargs)
|
||||||
|
WORDPRESS_PASSWORD=$(sed -e 's#.*=\(\)#\1#' <<< "$(awk '/WORDPRESS_ADMIN_PASSWORD/{print}' .env)" | xargs)
|
||||||
|
WORDPRESS_PLUGINS_TO_INSTALL=$(sed -e 's#.*=\(\)#\1#' <<< "$(awk '/WORDPRESS_PLUGINS_TO_INSTALL/{print}' .env)" | xargs)
|
||||||
|
WORDPRESS_THEME_TO_INSTALL=$(sed -e 's#.*=\(\)#\1#' <<< "$(awk '/WORDPRESS_THEME_TO_INSTALL/{print}' .env)" | xargs)
|
||||||
|
|
||||||
|
|
||||||
|
echo "Hello"
|
||||||
|
echo $SERVER_NAME
|
||||||
|
echo $WORDPRESS_TITLE
|
||||||
|
|
||||||
|
## Install Wodpress
|
||||||
|
docker compose run wpcli core install \
|
||||||
|
--url=${SERVER_NAME} \
|
||||||
|
--title="${WORDPRESS_TITLE}" \
|
||||||
|
--admin_user=${WORDPRESS_USER} \
|
||||||
|
--admin_email=${WORDPRESS_EMAIL} \
|
||||||
|
--admin_password=${WORDPRESS_PASSWORD} \
|
||||||
|
--skip-email
|
||||||
|
|
||||||
|
## Configure Permalinks
|
||||||
|
docker compose run wpcli rewrite structure '/%postname%/'
|
||||||
|
|
||||||
|
## Install Plugins
|
||||||
|
docker compose run wpcli plugin install ${WORDPRESS_PLUGINS_TO_INSTALL} --activate
|
||||||
|
|
||||||
|
## Enable Redis Cache Object
|
||||||
|
docker compose run wpcli redis enable
|
||||||
|
|
||||||
|
## Enable and config Cache Enabler
|
||||||
|
docker compose run wpcli option update cache_enabler '{
|
||||||
|
"version": "1.8.0",
|
||||||
|
"use_trailing_slashes": 1,
|
||||||
|
"permalink_structure": "has_trailing_slash",
|
||||||
|
"cache_expires": 1,
|
||||||
|
"cache_expiry_time": 8,
|
||||||
|
"clear_site_cache_on_saved_post": 0,
|
||||||
|
"clear_site_cache_on_saved_comment": 0,
|
||||||
|
"clear_site_cache_on_saved_term": 0,
|
||||||
|
"clear_site_cache_on_saved_user": 0,
|
||||||
|
"clear_site_cache_on_changed_plugin": 0,
|
||||||
|
"convert_image_urls_to_webp": 0,
|
||||||
|
"mobile_cache": 0,
|
||||||
|
"compress_cache": 1,
|
||||||
|
"minify_html": 1,
|
||||||
|
"minify_inline_css_js": 1,
|
||||||
|
"excluded_post_ids": "",
|
||||||
|
"excluded_page_paths": "",
|
||||||
|
"excluded_query_strings": "",
|
||||||
|
"excluded_cookies": ""
|
||||||
|
}' --format=json
|
||||||
|
|
||||||
|
# Theme installation
|
||||||
|
docker compose run wpcli theme install "${WORDPRESS_THEME_TO_INSTALL}" --activate
|
||||||
|
|
||||||
|
echo -e "\nREPORT\n"
|
||||||
|
|
||||||
|
# List users
|
||||||
|
echo "== User List =="
|
||||||
|
docker compose run wpcli user list
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Show installed plugin
|
||||||
|
echo "== Theme List =="
|
||||||
|
docker compose run wpcli theme list
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Show installed plugin
|
||||||
|
echo "== Plugin List =="
|
||||||
|
docker compose run wpcli plugin list
|
||||||
|
echo ""
|
||||||
Executable
+1
@@ -0,0 +1 @@
|
|||||||
|
docker compose up -d
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
docker compose down
|
||||||
|
rm -rf wordpress/html
|
||||||
|
rm -rf wordpress/mysql
|
||||||
Reference in New Issue
Block a user