Compare commits

..

12 Commits

Author SHA1 Message Date
a7f5a2edf2 Added DEV_MODE flag 2022-04-05 14:21:13 +02:00
e12488b0cb Update 'README.md' 2022-04-05 14:19:47 +02:00
9c2d93b9b3 Update '.env.sample' 2022-04-05 14:19:05 +02:00
c938e33828 Changed order of vars in case it mattered 2022-04-05 13:29:06 +02:00
e9becba06a Put SSH info in docker-compose.yml 2022-04-05 13:27:49 +02:00
268454c84d Update 'src/composer.json' 2022-01-26 18:20:30 +01:00
38f09c136e Update 'docker-compose.yml' 2022-01-26 17:43:12 +01:00
3wc
93402767b7 Add some deployment documentation
Ref #13
2021-12-17 13:01:19 +02:00
3wc
e59daa1c28 Add example Drone config
Ref #13
2021-12-17 12:25:11 +02:00
3wc
887be23588 Switch to our nginx image, drop nginx.conf
Closes #18
2021-12-17 12:08:38 +02:00
3wc
b1883e0c85 Tweak docs 2021-12-16 23:45:28 +02:00
1baff323a4 added to README, and added et-cache and wflogs to gitignore 2021-12-16 14:46:36 +00:00
7 changed files with 106 additions and 56 deletions

32
.drone.yml Normal file
View File

@ -0,0 +1,32 @@
---
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,6 +8,9 @@ ENTRYPOINT_CONF_VERSION=v1
# Wordpress debugging # Wordpress debugging
WORDPRESS_DEBUG=1 WORDPRESS_DEBUG=1
# If 1, composer install runs with "--prefer-source"
DEV_MODE=1
SELINUX=0 SELINUX=0
# If you need to manually specify a path to (bash) abra, do it here: # If you need to manually specify a path to (bash) abra, do it here:

3
.gitignore vendored Normal file → Executable file
View File

@ -1,5 +1,8 @@
# Application # Application
/src/web/app/plugins/* /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/plugins/.gitkeep
/src/web/app/mu-plugins/* /src/web/app/mu-plugins/*
/src/web/app/upgrade /src/web/app/upgrade

View File

@ -2,9 +2,62 @@
A template for a Wordpress site using Bedrock (Composer) + 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 ## Quick start
1. Create a new repository in Gitea, using this repository as a template 1. Install Docker, docker-compose, and git
2. Clone the new repository 2. Create a new repository in Gitea, using this repository as a template
3. Copy `src/.env.example` to `src/.env` 3. Clone the new repository
4. Run `docker-compose up` 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

View File

@ -3,21 +3,27 @@ version: '3.1'
services: services:
web: web:
image: nginx:alpine image: "thecoopcloud/nginx:1.21.4-bedrock"
working_dir: /app working_dir: /app
ports: ports:
- "80:80" - "80:80"
volumes: volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:cached
- ./src:/app:cached - ./src:/app:cached
environment:
- PHP_SERVICE=php
php: php:
image: "thecoopcloud/wordpress:5.8.2-php7.4-fpm-bedrock" image: "thecoopcloud/wordpress:5.8.2-php7.4-fpm-bedrock"
working_dir: /app working_dir: /app
user: 1000:1000 environment:
# Pass SSH agent socket, to avoid having to reënter your passphrase
SSH_AUTH_SOCK: "${SSH_AUTH_SOCK}"
DEV_MODE: "${DEV_MODE}"
volumes: volumes:
- ./src:/app:cached - ./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
db: db:
image: mariadb:10.4 image: mariadb:10.4
volumes: volumes:

View File

@ -1,48 +0,0 @@
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;
}
}

View File

@ -33,6 +33,7 @@
"require": { "require": {
"php": ">=7.1", "php": ">=7.1",
"composer/installers": "^1.12", "composer/installers": "^1.12",
"wp-cli/wp-cli-bundle": "*",
"vlucas/phpdotenv": "^5.3", "vlucas/phpdotenv": "^5.3",
"oscarotero/env": "^2.1", "oscarotero/env": "^2.1",
"roots/bedrock-autoloader": "^1.0", "roots/bedrock-autoloader": "^1.0",