First Commit!
This commit is contained in:
parent
dcd4cc23fd
commit
34bf3bb762
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.env
|
10
Dockerfile.wordpress_fpm
Normal file
10
Dockerfile.wordpress_fpm
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Wordpress - make a copy of wp-includes to compare with existing volumes
|
||||||
|
|
||||||
|
# 'docker-compose exec wordpress bash -c 'cd /var/www/html/wp-includes && grep wp_version version.php'
|
||||||
|
FROM wordpress:6-fpm
|
||||||
|
|
||||||
|
# ancient debian
|
||||||
|
#RUN apt update && apt -y install vim less
|
||||||
|
|
||||||
|
# Using cp rather than mv so the image can easily be rebuilt
|
||||||
|
RUN cp -a /usr/src/wordpress/wp-content /var/www/html/wp-content-new
|
44
default.conf
Normal file
44
default.conf
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# https://www.nginx.com/resources/wiki/start/topics/recipes/mediawiki/
|
||||||
|
# https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/
|
||||||
|
|
||||||
|
server {
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name wordpress;
|
||||||
|
root /var/www/html;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
#access_log /var/log/nginx/host.access.log main;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# redirect server error pages to the static page /50x.html
|
||||||
|
#
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# pass the PHP scripts to FastCGI server listening on wordpress2:9000
|
||||||
|
#
|
||||||
|
location ~ \.php$ {
|
||||||
|
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
fastcgi_pass wordpress:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
# fastcgi_param PHP_VALUE "upload_max_filesize=8M";
|
||||||
|
fastcgi_param PHP_VALUE "upload_max_filesize=8M; post_max_size=128M; memory_limit=256M";
|
||||||
|
}
|
||||||
|
|
||||||
|
# location ~* \.(jpg|jpeg|gif|png|css|js|ico)$ {
|
||||||
|
# expires max;
|
||||||
|
# log_not_found off;
|
||||||
|
# }
|
||||||
|
|
||||||
|
}
|
36
docker-compose.first.yml
Normal file
36
docker-compose.first.yml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# The purpose of this docker compose is just to setup a new /var/www/html volume
|
||||||
|
# from a new version of wordpress, after 'down -v'
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
wordpress:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.wordpress_fpm
|
||||||
|
image: ${IMAGE_WEB:-web}
|
||||||
|
volumes:
|
||||||
|
- html:/var/www/html
|
||||||
|
environment:
|
||||||
|
- WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST:-database:3306}
|
||||||
|
- WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD:-fake}
|
||||||
|
- VIRTUAL_HOST=${VIRTUAL_HOST:-wordpress}
|
||||||
|
- LETSENCRYPT_HOST=${LETSENCRYPT_HOST:-wordpress}
|
||||||
|
- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL:-me}
|
||||||
|
- LETSENCRYPT_TEST=${LETSENCRYPT_TEST:-true}
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- letsencrypt
|
||||||
|
- default
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
html:
|
||||||
|
name: ${HTML_VOLUME:-html}
|
||||||
|
|
||||||
|
networks:
|
||||||
|
letsencrypt:
|
||||||
|
external: true
|
103
docker-compose.yml
Normal file
103
docker-compose.yml
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# Buildkit to simplify the whole process of upgrading Wordpress with official images
|
||||||
|
#
|
||||||
|
# This version is designed for fpm, using a default.conf which references the wordpress service
|
||||||
|
#
|
||||||
|
# STEPS:
|
||||||
|
|
||||||
|
# Set COMPOSE_PROJECT_NAME in .env
|
||||||
|
# docker compose down -v
|
||||||
|
# Change wordpress version as required in Dockerfile.wordpress_fpm and .env (IMAGE_FIRST)
|
||||||
|
# docker compose -f docker-compose.first.yml build
|
||||||
|
# docker compose -f docker-compose.first.yml up -d
|
||||||
|
# docker compose -f docker-compose.first.yml down
|
||||||
|
# docker compose up -d
|
||||||
|
# at this point manually copy everything from wp-content-new to wp-content: cp -a wp-content-new/* wp-content/
|
||||||
|
#
|
||||||
|
# MAKE SURE PERMISSIONS ARE CORRECT in wp-content
|
||||||
|
# (if you need to) ./update-db
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
database:
|
||||||
|
image: ${IMAGE_DATABASE:-database}
|
||||||
|
volumes:
|
||||||
|
- db:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE:-wordpress}
|
||||||
|
- MYSQL_USER=${MYSQL_USER:-wordpress}
|
||||||
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-fake}
|
||||||
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-fake}
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- letsencrypt
|
||||||
|
|
||||||
|
wordpress:
|
||||||
|
# build:
|
||||||
|
# context: .
|
||||||
|
# dockerfile: Dockerfile.wordpress_fpm
|
||||||
|
image: ${IMAGE_WEB:-wordpress}
|
||||||
|
volumes:
|
||||||
|
- html:/var/www/html
|
||||||
|
- content:/var/www/html/wp-content
|
||||||
|
- ./wp-config.php:/var/www/html/wp-config.php
|
||||||
|
environment:
|
||||||
|
- WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST:-database:3306}
|
||||||
|
- WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD:-fake}
|
||||||
|
- VIRTUAL_HOST=${VIRTUAL_HOST:-wordpress}
|
||||||
|
- LETSENCRYPT_HOST=${LETSENCRYPT_HOST:-wordpress}
|
||||||
|
- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL:-me}
|
||||||
|
- LETSENCRYPT_TEST=${LETSENCRYPT_TEST:-true}
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
restart: always
|
||||||
|
command: >
|
||||||
|
bash -c "chown -R www-data:www-data /var/www/html/wp-content && php-fpm"
|
||||||
|
networks:
|
||||||
|
- letsencrypt
|
||||||
|
- default
|
||||||
|
|
||||||
|
# nginx:latest and/or can be customized
|
||||||
|
web:
|
||||||
|
# build:
|
||||||
|
# context: .
|
||||||
|
# dockerfile: Dockerfile.nginx
|
||||||
|
image: nginx:latest
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- html:/var/www/html/
|
||||||
|
- content:/var/www/html/wp-content
|
||||||
|
- ./default.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
- ./nginx.conf:/etc/nginx/nginx.conf
|
||||||
|
environment:
|
||||||
|
- VIRTUAL_HOST=${VIRTUAL_HOST:-wordpress}
|
||||||
|
- LETSENCRYPT_HOST=${LETSENCRYPT_HOST:-wordpress}
|
||||||
|
- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL:-me}
|
||||||
|
- LETSENCRYPT_TEST=${LETSENCRYPT_TEST:-true}
|
||||||
|
networks:
|
||||||
|
- letsencrypt
|
||||||
|
- default
|
||||||
|
|
||||||
|
# No variable substition for volumes in this version
|
||||||
|
volumes:
|
||||||
|
db:
|
||||||
|
external: true
|
||||||
|
name: ${DB_VOLUME:-db}
|
||||||
|
html:
|
||||||
|
name: ${HTML_VOLUME:-html}
|
||||||
|
content:
|
||||||
|
external: true
|
||||||
|
name: ${CONTENT_VOLUME:-content}
|
||||||
|
|
||||||
|
networks:
|
||||||
|
letsencrypt:
|
||||||
|
external: true
|
||||||
|
# default:
|
||||||
|
# name: ${COMPOSE_PROJECT_NAME}_default
|
38
nginx.conf
Normal file
38
nginx.conf
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
user nginx;
|
||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
error_log /var/log/nginx/error.log notice;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
client_max_body_size 100M;
|
||||||
|
client_body_buffer_size 100M;
|
||||||
|
proxy_buffer_size 128k;
|
||||||
|
proxy_buffers 4 256k;
|
||||||
|
proxy_busy_buffers_size 256k;
|
||||||
|
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
#tcp_nopush on;
|
||||||
|
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
#gzip on;
|
||||||
|
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
}
|
14
update-db
Executable file
14
update-db
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ".env"
|
||||||
|
|
||||||
|
website="https://$VIRTUAL_HOST"
|
||||||
|
command="docker-compose exec database mysql"
|
||||||
|
|
||||||
|
echo $website
|
||||||
|
|
||||||
|
$command -u $MYSQL_USER $MYSQL_DATABASE -p"$WORDPRESS_DB_PASSWORD" -e "UPDATE cf_options SET option_value='$website' WHERE option_name='home';"
|
||||||
|
$command -u $MYSQL_USER $MYSQL_DATABASE -p"$WORDPRESS_DB_PASSWORD" -e "UPDATE cf_options SET option_value='$website' WHERE option_name='siteurl';"
|
||||||
|
|
||||||
|
## Add
|
||||||
|
# /usr/bin/find /var/www/html/wp-content/uploads/ -type d -exec chmod 755 {} \; -o -type f -exec chmod 644 {} \;
|
95
wp-config.php
Normal file
95
wp-config.php
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* The base configuration for WordPress
|
||||||
|
*
|
||||||
|
* The wp-config.php creation script uses this file during the
|
||||||
|
* installation. You don't have to use the web site, you can
|
||||||
|
* copy this file to "wp-config.php" and fill in the values.
|
||||||
|
*
|
||||||
|
* This file contains the following configurations:
|
||||||
|
*
|
||||||
|
* * MySQL settings
|
||||||
|
* * Secret keys
|
||||||
|
* * Database table prefix
|
||||||
|
* * ABSPATH
|
||||||
|
*
|
||||||
|
* @link https://codex.wordpress.org/Editing_wp-config.php
|
||||||
|
*
|
||||||
|
* @package WordPress
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ** MySQL settings - You can get this info from your web host ** //
|
||||||
|
/** The name of the database for WordPress */
|
||||||
|
define('DB_NAME', 'wordpress');
|
||||||
|
|
||||||
|
/** MySQL database username */
|
||||||
|
define('DB_USER', 'root');
|
||||||
|
|
||||||
|
/** MySQL database password */
|
||||||
|
define('DB_PASSWORD', 'wordpress');
|
||||||
|
|
||||||
|
/** MySQL hostname */
|
||||||
|
define('DB_HOST', getenv('WORDPRESS_DB_HOST'));
|
||||||
|
|
||||||
|
/** Database Charset to use in creating database tables. */
|
||||||
|
define('DB_CHARSET', 'utf8');
|
||||||
|
|
||||||
|
/** The Database Collate type. Don't change this if in doubt. */
|
||||||
|
define('DB_COLLATE', '');
|
||||||
|
|
||||||
|
/**#@+
|
||||||
|
* Authentication Unique Keys and Salts.
|
||||||
|
*
|
||||||
|
* Change these to different unique phrases!
|
||||||
|
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
|
||||||
|
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*/
|
||||||
|
define('AUTH_KEY', 'dU_!>D;E$}Z%PQ*S^N@UZj}02GT.ce^%MLLB#4})%P(gVKYG(J5MKl[![Y;nN^%0');
|
||||||
|
define('SECURE_AUTH_KEY', '+-9zk5?X=JazoN|.SfnyDuq*eEha?baAO:,B!XIf+WlhEXbK%30wg/fZ>J;/%n|B');
|
||||||
|
define('LOGGED_IN_KEY', '{#lT+Rq-zLKA?H#_Xu+az9Ae,/rOL {jT%l.o.&CY%IRB+,Jidi?M.@d`f`8NpPE');
|
||||||
|
define('NONCE_KEY', 'uw!r}Koniy9yV}&.w#HT@(L/Wf<6mcFK[OM,Jsot.B`~%T~ShmEai#my/7_Yr}s&');
|
||||||
|
define('AUTH_SALT', '?0(Sm)EJr6J~) $$DJ$-:jo4S}U2s@-(Rg9jROY<EMD~SH]`@YF-=o| P|bU-}C<');
|
||||||
|
define('SECURE_AUTH_SALT', '*nn>S?/e8p1e?:t7vAH99uS)jffX~+3?v+?d+_&!J|9~8oH6wopu_5 1iW{l_XUt');
|
||||||
|
define('LOGGED_IN_SALT', '.Hca|;r-C8c[<]Y@28KX*6&gBT=s:I:1|6Y -DNQ*SD)R-`~8<drS}]*?;&d|[;T');
|
||||||
|
define('NONCE_SALT', '!M@7=}Gsx@4MVX|][e<N--f@BvkG_8,z5*8.G#lPr<Wrl0^0}hEVJef?_gQh-3$G');
|
||||||
|
|
||||||
|
/**#@-*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WordPress Database Table prefix.
|
||||||
|
*
|
||||||
|
* You can have multiple installations in one database if you give each
|
||||||
|
* a unique prefix. Only numbers, letters, and underscores please!
|
||||||
|
*/
|
||||||
|
$table_prefix = 'cf_';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For developers: WordPress debugging mode.
|
||||||
|
*
|
||||||
|
* Change this to true to enable the display of notices during development.
|
||||||
|
* It is strongly recommended that plugin and theme developers use WP_DEBUG
|
||||||
|
* in their development environments.
|
||||||
|
*
|
||||||
|
* For information on other constants that can be used for debugging,
|
||||||
|
* visit the Codex.
|
||||||
|
*
|
||||||
|
* @link https://codex.wordpress.org/Debugging_in_WordPress
|
||||||
|
*/
|
||||||
|
define('WP_DEBUG', false);
|
||||||
|
|
||||||
|
// If we're behind a proxy server and using HTTPS, we need to alert Wordpress of that fact
|
||||||
|
// see also http://codex.wordpress.org/Administration_Over_SSL#Using_a_Reverse_Proxy
|
||||||
|
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
|
||||||
|
$_SERVER['HTTPS'] = 'on';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* That's all, stop editing! Happy blogging. */
|
||||||
|
|
||||||
|
/** Absolute path to the WordPress directory. */
|
||||||
|
if ( !defined('ABSPATH') )
|
||||||
|
define('ABSPATH', dirname(__FILE__) . '/');
|
||||||
|
|
||||||
|
/** Sets up WordPress vars and included files. */
|
||||||
|
require_once(ABSPATH . 'wp-settings.php');
|
Loading…
x
Reference in New Issue
Block a user