First steps

This commit is contained in:
meskio 2022-12-18 00:26:19 +01:00
commit bf89bdbe8c
No known key found for this signature in database
GPG Key ID: 52B8F5AC97A2DA86
8 changed files with 284 additions and 0 deletions

30
Dockerfile Normal file
View File

@ -0,0 +1,30 @@
FROM registry.sindominio.net/nginx-php
RUN apt-get update && \
apt-get -qy install --no-install-recommends \
gnupg ca-certificates less \
php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip php-redis && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# install wp-cli
ADD https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar /usr/local/bin/wp
RUN chmod +rx /usr/local/bin/wp
# verify wp-cli signature
COPY wp-key.asc /key.asc
ADD https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.asc /wp.asc
RUN gpg --import /key.asc && \
gpg --verify /wp.asc /usr/local/bin/wp
RUN mkdir /app
WORKDIR /app
# install wordpress
RUN wp --allow-root core download
ADD wp-config.php /app/
# TODO: install themes and plugins
VOLUME /app/wp-content/uploads
ADD setup /etc/setup

18
README.md Normal file
View File

@ -0,0 +1,18 @@
# container image of WordPress
```
$ mkdir uploads db
$ cp env.sample .env
$ vim .env
```
Customize parameters
## Custom themes or pluggins
To include custom themes or pluggins mount them directly into /app/wp-content/:
```
volumes:
- ./uploads:/app/wp-content/uploads
- ./mytheme:/app/wp-content/themes/mytheme
```

38
docker-compose.yml Normal file
View File

@ -0,0 +1,38 @@
version: '2.4'
services:
db:
# TODO: fix our mariadb container
#image: registry.sindominio.net/mariadb
image: mysql
user: "$USER_GROUP"
restart: always
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=1
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
wordpress:
image: registry.sindominio.net/wordpress
user: "$USER_GROUP"
restart: always
depends_on:
- db
volumes:
- ./uploads:/app/wp-content/uploads
ports:
- 8080:8080
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
- WP_USER
- WP_PASS
- WP_EMAIL
- WP_TITLE
- WP_URL

11
env.sample Normal file
View File

@ -0,0 +1,11 @@
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress
USER_GROUP=1000:1000
WP_USER=admin
WP_PASS=admin
WP_EMAIL=real@mail.org
WP_TITLE=Wordpress Title
WP_URL=http://docker:8080

15
setup Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
export WORDPRESS_ROOT=/app
WP_CLI="/usr/local/bin/wp --allow-root --path=$WORDPRESS_ROOT"
# TODO: wait for the DB to be ready
sleep 10
if ! $WP_CLI core is-installed; then
echo "Install Wordpress"
$WP_CLI core install --url="$WP_URL" --title="$WP_TITLE" --admin_user="$WP_USER" --admin_password="$WP_PASS" --admin_email="$WP_EMAIL"
else
echo "Update DB"
$WP_CLI core update-db
fi

8
version Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
# https://codex.wordpress.org/WordPress.org_API
WP=`curl -s https://api.wordpress.org/core/version-check/1.7/ |jq -r '.offers[0].version'`
WP_CLI=`curl -s https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar |sha256sum |awk '{ print $1 }'`
echo "$WP:$WP_CLI"

134
wp-config.php Normal file
View File

@ -0,0 +1,134 @@
<?php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the installation.
* You don't have to use the web site, you can copy this file to "wp-config.php"
* and fill in the values.
*
* This file contains the following configurations:
*
* * Database settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* This has been slightly modified (to read environment variables) for use in Docker.
*
* @link https://wordpress.org/support/article/editing-wp-config-php/
*
* @package WordPress
*/
// IMPORTANT: this file needs to stay in-sync with https://github.com/WordPress/WordPress/blob/master/wp-config-sample.php
// (it gets parsed by the upstream wizard in https://github.com/WordPress/WordPress/blob/f27cb65e1ef25d11b535695a660e7282b98eb742/wp-admin/setup-config.php#L356-L392)
// a helper function to lookup "env_FILE", "env", then fallback
if (!function_exists('getenv_docker')) {
// https://github.com/docker-library/wordpress/issues/588 (WP-CLI will load this file 2x)
function getenv_docker($env, $default) {
if ($fileEnv = getenv($env . '_FILE')) {
return rtrim(file_get_contents($fileEnv), "\r\n");
}
else if (($val = getenv($env)) !== false) {
return $val;
}
else {
return $default;
}
}
}
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', getenv_docker('MYSQL_DATABASE', 'wordpress') );
/** Database username */
define( 'DB_USER', getenv_docker('MYSQL_USER', 'example username') );
/** Database password */
define( 'DB_PASSWORD', getenv_docker('MYSQL_PASSWORD', 'example password') );
/**
* Docker image fallback values above are sourced from the official WordPress installation wizard:
* https://github.com/WordPress/WordPress/blob/f9cc35ebad82753e9c86de322ea5c76a9001c7e2/wp-admin/setup-config.php#L216-L230
* (However, using "example username" and "example password" in your database is strongly discouraged. Please use strong, random credentials!)
*/
/** Database hostname */
define( 'DB_HOST', getenv_docker('MYSQL_HOST', 'mysql') );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8');
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '');
/**#@+
* Authentication unique keys and salts.
*
* Change these to different unique phrases! You can generate these using
* the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
*
* You can change these at any point in time to invalidate all existing cookies.
* This will force all users to have to log in again.
*
* @since 2.6.0
*/
// We use only database stored authentication keys
// this might be problematic: https://wordpress.stackexchange.com/a/152905/199287
define( 'AUTH_KEY', 'very secret key');
define( 'SECURE_AUTH_KEY', 'very secret key');
define( 'LOGGED_IN_KEY', 'very secret key');
define( 'NONCE_KEY', 'very secret key');
define( 'AUTH_SALT', 'very secret key');
define( 'SECURE_AUTH_SALT', 'very secret key');
define( 'LOGGED_IN_SALT', 'very secret key');
define( 'NONCE_SALT', 'very secret key');
/**#@-*/
/**
* WordPress database table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = '';
/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*
* For information on other constants that can be used for debugging,
* visit the documentation.
*
* @link https://wordpress.org/support/article/debugging-in-wordpress/
*/
define( 'WP_DEBUG', !!getenv_docker('WORDPRESS_DEBUG', '') );
/* Add any custom values between this line and the "stop editing" line. */
// If we're behind a proxy server and using HTTPS, we need to alert WordPress of that fact
// see also https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
// (we include this by default because reverse proxying is extremely common in container environments)
if ($configExtra = getenv_docker('WORDPRESS_CONFIG_EXTRA', '')) {
eval($configExtra);
}
/* That's all, stop editing! Happy publishing. */
/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

30
wp-key.asc Normal file
View File

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFsQEBkBCADfGAhxQ71XaIk31SjD8dNH3uVNtPh/2SIIhYbObMvEG6uoMucP
t3jCsnkh/veKBkJ+HJ/XcARGoFYdaCZo5PTORBWOwHmeWPbu7aiAM4v3EKPc8wZP
jabtEejwZrRFlSlAu5YL25ldz5KNgvGOBdje9jUi2iovQ4lfjMEuH2sXhmDQPbDW
22Fb2xinvmlnyf5kJn9ADiWm6VEnaNvaL96TCC1iUrMJmYI0m29j2sVbKJIq8ZBO
CgtY4llPC7QskWw8VXEAq2WnQeZMVLqxOSoRDy/qUvw0RR+DfiXsrHjBxAH4uvHK
zUdnMl1Qbh2A/rfcsIaJubXg5pUXwF7TCvSPABEBAAG0JVdQLUNMSSBSZWxlYXNl
cyA8cmVsZWFzZXNAd3AtY2xpLm9yZz6JAU4EEwEIADgCGwMFCwkIBwIGFQgJCgsC
BBYCAwECHgECF4AWIQRjr3qhUGfAVhb93YijoujyJvC8BgUCWxAQ7AAKCRCjoujy
JvC8BmYTCACPEYQr89U/H/iQcI012UaOSLYLx+Qj9oA7p9gv2mZSBHNSijzhnizo
QBEg7q7BXF8B8UqL9ZhUWfG9PiR8kkFbBN1sIY0RM5cFltb3cJthVH4ZV8SUiGW6
zIOd8m5JXVnekmZyJFpufxDHms6F3Z2RNUbdZSp2Mj+5p/a4GtJhfGGpfYBbXOxG
gdx5dmipjlxfP5M3YL4QCJoySB+sY92de5b3S3tqmj7ldb/GRvN/7XjoMDwbRso6
jrhGtk8TjtAV0l/VdjebpI6zivrDLYDQq5vwi6hGPl7k88ElU47vaJiJX5yXaJ/k
LFQ3g8raFQq69nqcDjJLGds+Y+lAXrtzuQENBFsQEBkBCAC9ZUHiXbBLvCejMXKK
vFpKaVsovI6RBU8l0sC+00yvpP+TJmRXracnesTqHyTlhAUMhpbFvG0mBMBdROt5
IPRZ2S9JdJKZFVqO7Nop0elO8wUe6rsEHisUbEP49BcqDHGxfEnB/MubnJO1hHEH
1ftnZBEQW3jNagOTikki9675qF4ONvaSeCY9DkHa4lbau24SzePvtWuxYGsdX+Jf
ikFxq8N2ArPlSoVv/DKEbl5dgz1hYFJ9qBKoXSbaKk1TxZ4bA8nxcznZHS+8Lirv
tEjB8Z68Hz+pXIFJBbchC/FMatZC2hjFobedc4dT3nxf5iiH9XsHI5bqp3UEsPlx
8LP5ABEBAAGJATYEGAEIACACGwwWIQRjr3qhUGfAVhb93YijoujyJvC8BgUCWxAR
IQAKCRCjoujyJvC8BhGMCACkNhkshrOYDRoOwny8m1mI2nSIU0KnjEruaeAXrY2T
5VHNfLkTX3wD2HYO97r1CvUNBUWpmTwSicK0Z6TCDp4A9Oi+z5CA/5zBT/iydC6E
czNAPUehdLKka9Qs0vrVq22S0dDiA4xXZUvQpoo8VUKlvau9igF98mbd56U89s3L
gg7O72A/4x7rhDO0Q+U8SIBJtFmEHIcu6gHkooQW3d7opHKCjbnyqxDQ/iUY3b8o
n75TXnDJWbjCFTiTMyVTeyQfK0Us8FbJNXhMMagalRQu/sBH56S7Cg2OLciQB1B2
sLbhbfYDXYriI/OGVIPvCEIH6FX4+KiFy7RS+0JthI0R
=fQDM
-----END PGP PUBLIC KEY BLOCK-----