Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9f41e313aa | 
							
								
								
									
										32
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								.drone.yml
									
									
									
									
									
								
							@ -1,32 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
kind: pipeline
 | 
			
		||||
name: deploy to docker container
 | 
			
		||||
steps:
 | 
			
		||||
  - name: docker cp deploy
 | 
			
		||||
    image: 3wordchant/docker-cp-deploy:latest
 | 
			
		||||
    settings:
 | 
			
		||||
      host: <HOSTNAME>
 | 
			
		||||
      service: <APP NAME>_php
 | 
			
		||||
      chdir: src
 | 
			
		||||
      exec: "composer install"
 | 
			
		||||
      source: "composer.json composer.lock"
 | 
			
		||||
      dest: /app/
 | 
			
		||||
      deploy_key:
 | 
			
		||||
        from_secret: <SSH KEY DRONE SECRET NAME>
 | 
			
		||||
  - name: notify on failure
 | 
			
		||||
    image: plugins/slack
 | 
			
		||||
    settings:
 | 
			
		||||
      username: comradebritney
 | 
			
		||||
      channel: internal.builds
 | 
			
		||||
      template: "{{repo.owner}}/{{repo.name}} build failed: {{build.link}}. Last commit by @{{build.author}}"
 | 
			
		||||
      webhook:
 | 
			
		||||
        from_secret: rc_builds_url
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - docker cp deploy
 | 
			
		||||
    when:
 | 
			
		||||
      status:
 | 
			
		||||
        - failure
 | 
			
		||||
 | 
			
		||||
trigger:
 | 
			
		||||
  branch:
 | 
			
		||||
    - main
 | 
			
		||||
@ -8,9 +8,6 @@ ENTRYPOINT_CONF_VERSION=v1
 | 
			
		||||
# Wordpress debugging
 | 
			
		||||
WORDPRESS_DEBUG=1
 | 
			
		||||
 | 
			
		||||
# If 1, composer install runs with "--prefer-source"
 | 
			
		||||
DEV_MODE=1
 | 
			
		||||
 | 
			
		||||
SELINUX=0
 | 
			
		||||
 | 
			
		||||
# If you need to manually specify a path to (bash) abra, do it here:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										35
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										35
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										
										
										Executable file → Normal file
									
								
							@ -1,29 +1,28 @@
 | 
			
		||||
# Application
 | 
			
		||||
/src/web/app/plugins/*
 | 
			
		||||
/src/web/app/themes/*
 | 
			
		||||
/src/web/app/et-cache/*
 | 
			
		||||
/src/web/app/wflogs/*
 | 
			
		||||
/src/!web/app/plugins/.gitkeep
 | 
			
		||||
/src/web/app/mu-plugins/*
 | 
			
		||||
/src/web/app/upgrade
 | 
			
		||||
/src/web/app/uploads/*
 | 
			
		||||
/src/!web/app/uploads/.gitkeep
 | 
			
		||||
/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
 | 
			
		||||
 | 
			
		||||
# WordPress
 | 
			
		||||
/src/web/wp
 | 
			
		||||
/src/web/.htaccess
 | 
			
		||||
/bedrock/web/wp
 | 
			
		||||
/bedrock/web/.htaccess
 | 
			
		||||
 | 
			
		||||
# Logs
 | 
			
		||||
/src/**/*.log
 | 
			
		||||
*.log
 | 
			
		||||
 | 
			
		||||
# Dotenv
 | 
			
		||||
/src/.env
 | 
			
		||||
/src/.env.*
 | 
			
		||||
!/src/.env.example
 | 
			
		||||
!/src/.env.sample
 | 
			
		||||
.env
 | 
			
		||||
.env.*
 | 
			
		||||
!.env.example
 | 
			
		||||
/bedrock/.env
 | 
			
		||||
/bedrock/.env.*
 | 
			
		||||
/bedrock/!.env.example
 | 
			
		||||
 | 
			
		||||
# Composer
 | 
			
		||||
/src/vendor
 | 
			
		||||
/bedrock/vendor
 | 
			
		||||
 | 
			
		||||
# WP-CLI
 | 
			
		||||
/src/wp-cli.local.yml
 | 
			
		||||
wp-cli.local.yml
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
FROM php:8.0-apache
 | 
			
		||||
 | 
			
		||||
COPY entrypoint-wordpress.sh /usr/local/bin/
 | 
			
		||||
 | 
			
		||||
COPY apache-docker.conf /etc/apache2/sites-enabled/
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT /usr/local/bin/entrypoint-wordpress.sh 
 | 
			
		||||
							
								
								
									
										63
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								README.md
									
									
									
									
									
								
							@ -1,63 +0,0 @@
 | 
			
		||||
# wordpress-bedrock-docker
 | 
			
		||||
 | 
			
		||||
A template for a Wordpress site using Bedrock (Composer) + Docker.
 | 
			
		||||
 | 
			
		||||
Based on
 | 
			
		||||
[`autonomic-cooperative/wordpress-docker-composer`](https://git.autonomic.zone/autonomic-cooperative/wordpress-docker-composer)
 | 
			
		||||
and
 | 
			
		||||
[`autonomic-cooperative/wordpress-nginx-docker`](https://git.autonomic.zone/autonomic-cooperative/wordpress-nginx-docker).
 | 
			
		||||
 | 
			
		||||
## Quick start
 | 
			
		||||
 | 
			
		||||
1. Install Docker, docker-compose, and git
 | 
			
		||||
2. Create a new repository in Gitea, using this repository as a template
 | 
			
		||||
3. Clone the new repository
 | 
			
		||||
4. Copy `.env.sample` to `.env`
 | 
			
		||||
4. Copy `src/.env.example` to `src/.env`
 | 
			
		||||
5. Run `docker-compose up`
 | 
			
		||||
 | 
			
		||||
You should now be able to access the local site on http://localhost
 | 
			
		||||
 | 
			
		||||
## Development
 | 
			
		||||
 | 
			
		||||
### Debugging
 | 
			
		||||
 | 
			
		||||
Set `WP_ENV=development` in `src/.env` to enable debugging output and the debug
 | 
			
		||||
log, and enable plugin and theme installation via the dashboard.
 | 
			
		||||
 | 
			
		||||
The debug log is located:
 | 
			
		||||
 | 
			
		||||
- outside containers: `./src/web/app/debug.log`
 | 
			
		||||
- inside containers: `/app/web/app/debug.log`
 | 
			
		||||
 | 
			
		||||
### Importing a database dump
 | 
			
		||||
 | 
			
		||||
Assuming you have `dump.sql.gz` in the current directory:
 | 
			
		||||
 | 
			
		||||
`zcat dump.sql.gz | docker-compose exec -T db mysql -u wordpress -pwordpress wordpress`
 | 
			
		||||
 | 
			
		||||
Post-restore steps:
 | 
			
		||||
* If **the upload path** was set in the database, you will need to change it (in
 | 
			
		||||
  Settings → Media) to `/app/web/app/uploads`
 | 
			
		||||
* If the site you're loading used a **non-standard database table prefix** (i.e.
 | 
			
		||||
  not `wp`), you'll need to specify it as `DB_PREFIX` in `src/.env`.
 | 
			
		||||
 | 
			
		||||
## Deployment
 | 
			
		||||
 | 
			
		||||
### Initial set-up
 | 
			
		||||
 | 
			
		||||
Our recommended production deployment set-up is:
 | 
			
		||||
 | 
			
		||||
- Web server: Nginx (ease of configuration vs. Apache, nobody seems to be using
 | 
			
		||||
  other web servers for Wordpress)
 | 
			
		||||
- PHP: PHP-FPM (better performance and security than mod_php)
 | 
			
		||||
- Database: MariaDB (flipped a coin between that and MySQL..)
 | 
			
		||||
- Auto-deployment: Drone (Autonomic standard)
 | 
			
		||||
- Updates: renovate-bot (Autonomic standard)
 | 
			
		||||
- Orchestration: Docker "swarm mode" / Co-op Cloud (Autonomic standard, also
 | 
			
		||||
  standardises backups and SSL, and makes it easier to migrate between servers)
 | 
			
		||||
- Host operating system: Debian (but others should work too)
 | 
			
		||||
- Server provisioning: Our [autonomic-cooperative/infrastructure Ansible
 | 
			
		||||
  playbooks](https://git.autonomic.zone/autonomic-cooperative/infrastructure/)
 | 
			
		||||
 | 
			
		||||
### Auto-deployment
 | 
			
		||||
							
								
								
									
										17
									
								
								apache-docker.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								apache-docker.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
<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,17 +1,17 @@
 | 
			
		||||
DB_NAME='wordpress'
 | 
			
		||||
DB_USER='wordpress'
 | 
			
		||||
DB_PASSWORD='wordpress'
 | 
			
		||||
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='db'
 | 
			
		||||
# DB_HOST='localhost'
 | 
			
		||||
# DB_PREFIX='wp_'
 | 
			
		||||
 | 
			
		||||
WP_ENV='development'
 | 
			
		||||
WP_HOME='http://localhost'
 | 
			
		||||
WP_HOME='http://example.com'
 | 
			
		||||
WP_SITEURL="${WP_HOME}/wp"
 | 
			
		||||
 | 
			
		||||
# Specify optional debug.log path
 | 
			
		||||
@ -33,14 +33,14 @@
 | 
			
		||||
  "require": {
 | 
			
		||||
    "php": ">=7.1",
 | 
			
		||||
    "composer/installers": "^1.12",
 | 
			
		||||
    "wp-cli/wp-cli-bundle": "*",
 | 
			
		||||
    "vlucas/phpdotenv": "^5.3",
 | 
			
		||||
    "oscarotero/env": "^2.1",
 | 
			
		||||
    "roots/bedrock-autoloader": "^1.0",
 | 
			
		||||
    "roots/bedrock-disallow-indexing": "^2.0",
 | 
			
		||||
    "roots/wordpress": "5.8.2",
 | 
			
		||||
    "roots/wp-config": "1.0.0",
 | 
			
		||||
    "roots/wp-password-bcrypt": "1.1.0"
 | 
			
		||||
    "roots/wp-password-bcrypt": "1.1.0",
 | 
			
		||||
    "wp-cli/wp-cli-bundle": "^2.5"
 | 
			
		||||
  },
 | 
			
		||||
  "require-dev": {
 | 
			
		||||
    "squizlabs/php_codesniffer": "^3.6.0",
 | 
			
		||||
							
								
								
									
										5489
									
								
								bedrock/composer.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										5489
									
								
								bedrock/composer.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								bedrock/web/app/mu-plugins/bedrock-autoloader.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								bedrock/web/app/mu-plugins/bedrock-autoloader.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
<?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();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								bedrock/web/app/mu-plugins/register-theme-directory.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								bedrock/web/app/mu-plugins/register-theme-directory.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
<?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,31 +1,27 @@
 | 
			
		||||
---
 | 
			
		||||
version: '3.1'
 | 
			
		||||
version: "3"
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  web:
 | 
			
		||||
    image: "thecoopcloud/nginx:1.21.4-bedrock"
 | 
			
		||||
    working_dir: /app
 | 
			
		||||
  wordpress:
 | 
			
		||||
    image: "thecoopcloud/wordpress:5.8.2-php7.4"
 | 
			
		||||
    build: .
 | 
			
		||||
    ports:
 | 
			
		||||
      - "80:80"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./src:/app:cached
 | 
			
		||||
      - "./bedrock/:/var/www/html/"
 | 
			
		||||
      - "./entrypoint-wordpress.sh:/usr/local/bin/entrypoint-wordpress.sh"
 | 
			
		||||
    environment:
 | 
			
		||||
      - PHP_SERVICE=php
 | 
			
		||||
  
 | 
			
		||||
  php:
 | 
			
		||||
    image: "thecoopcloud/wordpress:5.8.2-php7.4-fpm-bedrock"
 | 
			
		||||
    working_dir: /app
 | 
			
		||||
    environment:
 | 
			
		||||
      # Pass SSH agent socket, to avoid having to reënter your passphrase
 | 
			
		||||
      SSH_AUTH_SOCK: "${SSH_AUTH_SOCK}"
 | 
			
		||||
      DEV_MODE: "${DEV_MODE}"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./src:/app:cached
 | 
			
		||||
      # Use your own SSH Host Key file
 | 
			
		||||
      - "${HOME}/.ssh/known_hosts:/root/.ssh/known_hosts:ro"
 | 
			
		||||
      - $SSH_AUTH_SOCK:$SSH_AUTH_SOCK
 | 
			
		||||
      - 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"
 | 
			
		||||
 | 
			
		||||
  db:
 | 
			
		||||
    image: mariadb:10.4
 | 
			
		||||
    image: "mariadb:10.6"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "mariadb:/var/lib/mysql"
 | 
			
		||||
    environment:
 | 
			
		||||
@ -33,6 +29,10 @@ services:
 | 
			
		||||
      - MYSQL_DATABASE=wordpress
 | 
			
		||||
      - MYSQL_USER=wordpress
 | 
			
		||||
      - MYSQL_PASSWORD=wordpress
 | 
			
		||||
    container_name: "${PROJECT_NAME}_db"
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  mariadb:
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  backend:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								entrypoint-wordpress.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								entrypoint-wordpress.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
#!/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
 | 
			
		||||
							
								
								
									
										1472
									
								
								src/composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1472
									
								
								src/composer.lock
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user