Incorporate spike5; working 🥳
This commit is contained in:
parent
325eb3f817
commit
98c4098bf2
32
.gitignore
vendored
32
.gitignore
vendored
@ -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
|
||||
|
14
Dockerfile
14
Dockerfile
@ -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
4
README.md
Normal 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`
|
@ -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>
|
@ -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'
|
@ -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();
|
||||
}
|
@ -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');
|
||||
}
|
@ -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
99
docker-entrypoint.sh
Executable 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 "$@"
|
@ -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
48
nginx.conf
Normal 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;
|
||||
}
|
||||
}
|
||||
|
0
bedrock/composer.lock → src/composer.lock
generated
0
bedrock/composer.lock → src/composer.lock
generated
Reference in New Issue
Block a user