Compare commits

..

1 Commits

Author SHA1 Message Date
3wc 9f41e313aa Working? 2021-12-03 15:54:54 +02:00
25 changed files with 5602 additions and 1615 deletions

View File

@ -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

View File

@ -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
View 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
View 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

View File

@ -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
View 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>

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View 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();
}

View 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');
}

View File

@ -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
View 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

File diff suppressed because it is too large Load Diff