Incorporate spike5; working 🥳

This commit is contained in:
3wc 2021-12-06 14:41:41 +02:00
parent 325eb3f817
commit 98c4098bf2
24 changed files with 190 additions and 131 deletions

32
.gitignore vendored
View File

@ -1,28 +1,26 @@
# Application
/bedrock/web/app/plugins/*
/bedrock/!web/app/plugins/.gitkeep
/bedrock/web/app/mu-plugins/*/
/bedrock/web/app/upgrade
/bedrock/web/app/uploads/*
/bedrock/!web/app/uploads/.gitkeep
/src/web/app/plugins/*
/src/!web/app/plugins/.gitkeep
/src/web/app/mu-plugins/*
/src/web/app/upgrade
/src/web/app/uploads/*
/src/!web/app/uploads/.gitkeep
# WordPress
/bedrock/web/wp
/bedrock/web/.htaccess
/src/web/wp
/src/web/.htaccess
# Logs
*.log
/src/*.log
# Dotenv
.env
.env.*
!.env.example
/bedrock/.env
/bedrock/.env.*
/bedrock/!.env.example
/src/.env
/src/.env.*
/src/!.env.example
/src/!.env.sample
# Composer
/bedrock/vendor
/src/vendor
# WP-CLI
wp-cli.local.yml
/src/wp-cli.local.yml

View File

@ -1,7 +1,13 @@
FROM php:8.1-apache
FROM wordpress:5.8.2-php8.0-fpm
# TODO: use renovate-bot to send pull requests on upstream image updates
COPY entrypoint-wordpress.sh /usr/local/bin/
COPY --from=composer:2.1 /usr/bin/composer /usr/bin/composer
# TODO: use renovate-bot to send pull requests on upstream image updates
COPY apache-docker.conf /etc/apache2/sites-enabled/
RUN apt-get update && apt-get install -y \
git \
unzip && \
rm -rf /var/lib/apt/lists/*
ENTRYPOINT /usr/local/bin/entrypoint-wordpress.sh
# Upstream Wordpress entrypoint, adapted for Composer use
COPY docker-entrypoint.sh /usr/local/bin/

4
README.md Normal file
View File

@ -0,0 +1,4 @@
1. Clone this repository
2. Copy `src/.env.example` to `src/.env`
3. Run `cd src && composer install`
4. Run `docker-compose up`

View File

@ -1,17 +0,0 @@
<VirtualHost *:80>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/web
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

View File

@ -1,28 +0,0 @@
DB_NAME='database_name'
DB_USER='database_user'
DB_PASSWORD='database_password'
# Optionally, you can use a data source name (DSN)
# When using a DSN, you can remove the DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST variables
# DATABASE_URL='mysql://database_user:database_password@database_host:database_port/database_name'
# Optional database variables
# DB_HOST='localhost'
# DB_PREFIX='wp_'
WP_ENV='development'
WP_HOME='http://example.com'
WP_SITEURL="${WP_HOME}/wp"
# Specify optional debug.log path
# WP_DEBUG_LOG='/path/to/debug.log'
# Generate your keys here: https://roots.io/salts.html
AUTH_KEY='generateme'
SECURE_AUTH_KEY='generateme'
LOGGED_IN_KEY='generateme'
NONCE_KEY='generateme'
AUTH_SALT='generateme'
SECURE_AUTH_SALT='generateme'
LOGGED_IN_SALT='generateme'
NONCE_SALT='generateme'

View File

@ -1,16 +0,0 @@
<?php
/**
* Plugin Name: Bedrock Autoloader
* Plugin URI: https://github.com/roots/bedrock-autoloader
* Description: An autoloader that enables standard plugins to be required just like must-use plugins. The autoloaded plugins are included during mu-plugin loading. An asterisk (*) next to the name of the plugin designates the plugins that have been autoloaded.
* Version: 1.0.3
* Author: Roots
* Author URI: https://roots.io/
* License: MIT License
*/
namespace Roots\Bedrock;
if (is_blog_installed() && class_exists(Autoloader::class)) {
new Autoloader();
}

View File

@ -1,14 +0,0 @@
<?php
/**
* Plugin Name: Register Theme Directory
* Plugin URI: https://github.com/roots/bedrock/
* Description: Register default theme directory
* Version: 1.0.0
* Author: Roots
* Author URI: https://roots.io/
* License: MIT License
*/
if (!defined('WP_DEFAULT_THEME')) {
register_theme_directory(ABSPATH . 'wp-content/themes');
}

View File

@ -1,27 +1,25 @@
---
version: "3"
version: '3.1'
services:
wordpress:
image: "thecoopcloud/wordpress:5.8.2-php7.4"
build: .
web:
image: nginx:alpine
working_dir: /app
ports:
- "80:80"
volumes:
- "./bedrock/:/var/www/html/"
- "./entrypoint-wordpress.sh:/usr/local/bin/entrypoint-wordpress.sh"
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_CONFIG_EXTRA=${WORDPRESS_CONFIG_EXTRA}
- WORDPRESS_DEBUG=${WORDPRESS_DEBUG}
- PHP_EXTENSIONS
container_name: "${PROJECT_NAME}_wordpress"
- ./nginx.conf:/etc/nginx/conf.d/default.conf:cached
- ./src:/app:cached
php:
image: "thecoopcloud/wordpress:5.8.2-php8.0-fpm-bedrock"
build: .
working_dir: /app
volumes:
- ./src:/app:cached
db:
image: "mariadb:10.6"
image: mariadb:10.4
volumes:
- "mariadb:/var/lib/mysql"
environment:
@ -29,10 +27,6 @@ services:
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
container_name: "${PROJECT_NAME}_db"
volumes:
mariadb:
networks:
backend:

99
docker-entrypoint.sh Executable file
View File

@ -0,0 +1,99 @@
#!/usr/bin/env bash
set -Eeuo pipefail
if [[ "$1" == apache2* ]] || [ "$1" = 'php-fpm' ]; then
uid="$(id -u)"
gid="$(id -g)"
if [ "$uid" = '0' ]; then
case "$1" in
apache2*)
user="${APACHE_RUN_USER:-www-data}"
group="${APACHE_RUN_GROUP:-www-data}"
# strip off any '#' symbol ('#1000' is valid syntax for Apache)
pound='#'
user="${user#$pound}"
group="${group#$pound}"
;;
*) # php-fpm
user='www-data'
group='www-data'
;;
esac
else
user="$uid"
group="$gid"
fi
# if [ ! -e index.php ] && [ ! -e wp-includes/version.php ]; then
# # if the directory exists and WordPress doesn't appear to be installed AND the permissions of it are root:root, let's chown it (likely a Docker-created directory)
# if [ "$uid" = '0' ] && [ "$(stat -c '%u:%g' .)" = '0:0' ]; then
# chown "$user:$group" .
# fi
#
# echo >&2 "WordPress not found in $PWD - copying now..."
# if [ -n "$(find -mindepth 1 -maxdepth 1 -not -name wp-content)" ]; then
# echo >&2 "WARNING: $PWD is not empty! (copying anyhow)"
# fi
# sourceTarArgs=(
# --create
# --file -
# --directory /usr/src/wordpress
# --owner "$user" --group "$group"
# )
# targetTarArgs=(
# --extract
# --file -
# )
# if [ "$uid" != '0' ]; then
# # avoid "tar: .: Cannot utime: Operation not permitted" and "tar: .: Cannot change mode to rwxr-xr-x: Operation not permitted"
# targetTarArgs+=( --no-overwrite-dir )
# fi
# # loop over "pluggable" content in the source, and if it already exists in the destination, skip it
# # https://github.com/docker-library/wordpress/issues/506 ("wp-content" persisted, "akismet" updated, WordPress container restarted/recreated, "akismet" downgraded)
# for contentPath in \
# /usr/src/wordpress/.htaccess \
# /usr/src/wordpress/wp-content/*/*/ \
# ; do
# contentPath="${contentPath%/}"
# [ -e "$contentPath" ] || continue
# contentPath="${contentPath#/usr/src/wordpress/}" # "wp-content/plugins/akismet", etc.
# if [ -e "$PWD/$contentPath" ]; then
# echo >&2 "WARNING: '$PWD/$contentPath' exists! (not copying the WordPress version)"
# sourceTarArgs+=( --exclude "./$contentPath" )
# fi
# done
# tar "${sourceTarArgs[@]}" . | tar "${targetTarArgs[@]}"
# echo >&2 "Complete! WordPress has been successfully copied to $PWD"
# fi
#
# wpEnvs=( "${!WORDPRESS_@}" )
# if [ ! -s wp-config.php ] && [ "${#wpEnvs[@]}" -gt 0 ]; then
# for wpConfigDocker in \
# wp-config-docker.php \
# /usr/src/wordpress/wp-config-docker.php \
# ; do
# if [ -s "$wpConfigDocker" ]; then
# echo >&2 "No 'wp-config.php' found in $PWD, but 'WORDPRESS_...' variables supplied; copying '$wpConfigDocker' (${wpEnvs[*]})"
# # using "awk" to replace all instances of "put your unique phrase here" with a properly unique string (for AUTH_KEY and friends to have safe defaults if they aren't specified with environment variables)
# awk '
# /put your unique phrase here/ {
# cmd = "head -c1m /dev/urandom | sha1sum | cut -d\\ -f1"
# cmd | getline str
# close(cmd)
# gsub("put your unique phrase here", str)
# }
# { print }
# ' "$wpConfigDocker" > wp-config.php
# if [ "$uid" = '0' ]; then
# # attempt to ensure that wp-config.php is owned by the run user
# # could be on a filesystem that doesn't allow chown (like some NFS setups)
# chown "$user:$group" wp-config.php || true
# fi
# break
# fi
# done
# fi
fi
exec "$@"

View File

@ -1,15 +0,0 @@
#!/bin/bash
if [ -n "$PHP_EXTENSIONS" ]; then
docker-php-ext-install "$PHP_EXTENSIONS"
fi
chown -R www-data:www-data /var/www/html
if [ -n "$*" ]; then
"$@"
fi
# Upstream ENTRYPOINT
# https://github.com/docker-library/wordpress/blob/master/php7.4/apache/Dockerfile#L120
apache2-foreground

48
nginx.conf Normal file
View File

@ -0,0 +1,48 @@
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
client_max_body_size 128M;
gzip on;
gzip_proxied any;
gzip_types text/plain text/xml text/css application/x-javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
sendfile on;
sendfile_max_chunk 512k;
root /app/web;
access_log off;
location / {
include /etc/nginx/mime.types;
root /app/web;
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ .php$ {
include fastcgi.conf;
fastcgi_read_timeout 300;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /app/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}