Initial commit

This commit is contained in:
xZero707 2020-03-29 01:42:21 +01:00
parent 6f7b90e712
commit 3a95a4ec0c
6 changed files with 221 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.idea/

51
Dockerfile Normal file
View File

@ -0,0 +1,51 @@
FROM wordpress:php7.4-fpm-alpine AS wordpress-builder
USER root
WORKDIR /tmp/build/rootfs
# Build root filesystem structure (overlay), and copy over neccessary files
RUN mkdir -p usr/local/bin \
&& mkdir -p usr/local/etc/php/conf.d/ \
&& mkdir -p usr/src/ \
&& mv /usr/src/wordpress usr/src/ \
&& mv /usr/local/etc/php/conf.d/error-logging.ini usr/local/etc/php/conf.d/ \
&& mv /usr/local/etc/php/conf.d/opcache-recommended.ini usr/local/etc/php/conf.d/
################################################# APP ##################################################################
FROM nlss/php-nginx
ENV APK_DEPS "zlib-dev libzip-dev libpng-dev icu-dev imagemagick-dev"
ENV APK_BUILD_DEPS "curl-dev autoconf alpine-sdk"
ENV APK_WP_CLI_DEPS "bash less mysql-client"
RUN apk add --update --no-cache ${APK_WP_CLI_DEPS} ${APK_DEPS} ${APK_BUILD_DEPS} \
&& docker-php-ext-install -j "$(nproc)" \
bcmath \
exif \
gd \
mysqli \
opcache \
zip \
intl \
&& pecl install redis apcu imagick-3.4.4 \
&& docker-php-ext-enable redis apcu imagick \
&& apk del ${APK_BUILD_DEPS} \
&& rm /tmp/* -rf
ADD rootfs /
COPY ["wp-config.php", "/var/www/html"]
COPY --from=wordpress-builder /tmp/build/rootfs /
COPY --from=wordpress:cli-php7.4 /usr/local/bin/wp /usr/local/bin/
ENV WP_CONTENT_ID 2bca7d694c6279bb79bbb642ba4305f9
ENV WP_VERSION 5.3.2
ENV WP_LOCALE en_GB
ENV CRON_ENABLED true
RUN echo "* * * * * /usr/local/bin/php /var/www/${WEB_ROOT}/wp-cron.php" >> /etc/crontabs/www-data
VOLUME ["/var/www/${WEB_ROOT}/wp-content"]
EXPOSE 80/TCP

View File

@ -0,0 +1,16 @@
#!/usr/bin/with-contenv bash
set -e
function wp() {
# Running as root in container is OK as long as all security implications are observed and maintained
/usr/local/bin/wp --allow-root "$@"
}
echo "> Verifying 'Wordpress ${WP_VERSION}' installation..."
if wp core version;
then
echo "> Found 'Wordpress ${WP_VERSION}'"
else
echo "> Downloading 'Wordpress ${WP_VERSION}'..."
wp core download --locale="${WP_LOCALE}" --version="${WP_VERSION}"
fi

View File

@ -0,0 +1,40 @@
server {
listen 80;
listen [::]:80;
server_name {{ getenv "VIRTUAL_HOST" | strings.ReplaceAll "," " " }};
set $base /var/www;
root $base/{{ getenv "WEB_ROOT" }};
# security
include nginxconfig.io/security.conf;
# logging
access_log /var/log/nginx/app-access.log;
error_log /var/log/nginx/app-error.log warn;
# index.php
index index.php;
# index.php fallback
location / {
try_files $uri $uri/ /index.php?$query_string;
}
#Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# handle .php
location ~ \.php$ {
fastcgi_intercept_errors on;
include nginxconfig.io/php_fastcgi.conf;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
# additional config
include nginxconfig.io/general.conf;
}

0
rootfs/usr/src/.gitkeep Normal file
View File

113
wp-config.php Normal file
View File

@ -0,0 +1,113 @@
<?php
/**
* The base configuration for WordPress
* Adapted for docker environment
* @author Aleksandar Puharic <xzero@elite7hackers.net>
*
* 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:
*
* * MySQL settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://codex.wordpress.org/Editing_wp-config.php
*
* @package WordPress
*/
/** Not needed behind the nginx-proxy */
define('FORCE_SSL_ADMIN', false);
define('FORCE_SSL_LOGIN', false);
/** Disable cron (will be run by system crond) */
define('DISABLE_WP_CRON', true);
/** Makes it easier to control in docker environment */
define('WP_CONTENT_DIR', $_ENV['WORDPRESS_CONTENT_DIR'] ?? (__DIR__ . '/wp-content'));
/**
* Redis Cache
*/
define('WP_REDIS_HOST', $_ENV['WORDPRESS_REDIS_HOST'] ?? null);
define('WP_CACHE', (bool)($_ENV['WORDPRESS_CACHE'] ?? false));
define('WP_CACHE_KEY_SALT', $_ENV['WORDPRESS_CACHE_KEY_SALT'] ?? null);
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', $_ENV['WORDPRESS_DB_NAME'] ?? 'wordpress');
/** MySQL database username */
define('DB_USER', $_ENV['WORDPRESS_DB_USER'] ?? 'wordpress');
/** MySQL database password */
define('DB_PASSWORD', $_ENV['WORDPRESS_DB_PASSWORD'] ?? '');
/** MySQL hostname */
define('DB_HOST', $_ENV['WORDPRESS_DB_HOST'] ?? 'localhost');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', $_ENV['WORDPRESS_DB_CHARSET'] ?? 'utf8mb4');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', $_ENV['WORDPRESS_DB_COLLATION'] ?? '');
/**#@+
* 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
*/
define('AUTH_KEY', $_ENV['WORDPRESS_AUTH_KEY'] ?? '');
define('SECURE_AUTH_KEY', $_ENV['WORDPRESS_SECURE_AUTH_KEY'] ?? '');
define('LOGGED_IN_KEY', $_ENV['WORDPRESS_LOGGED_IN_KEY'] ?? '');
define('NONCE_KEY', $_ENV['WORDPRESS_NONCE_KEY'] ?? '');
define('AUTH_SALT', $_ENV['WORDPRESS_AUTH_SALT'] ?? '');
define('SECURE_AUTH_SALT', $_ENV['WORDPRESS_SECURE_AUTH_SALT'] ?? '');
define('LOGGED_IN_SALT', $_ENV['WORDPRESS_LOGGED_IN_SALT'] ?? '');
define('NONCE_SALT', $_ENV['WORDPRESS_NONCE_SALT'] ?? '');
/**#@-*/
/**
* 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 = $_ENV['WORDPRESS_TABLE_PREFIX'] ?? 'wp_';
/**
* 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 Codex.
*
* @link https://codex.wordpress.org/Debugging_in_WordPress
*/
define('WP_DEBUG', (bool)($_ENV['WORDPRESS_DEBUG'] ?? false));
/**
* Other settings
*/
define('FS_METHOD', 'direct');
/* That's all, stop editing! Happy blogging. */
/** 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');