diff --git a/BACKUP b/BACKUP new file mode 100644 index 0000000000000000000000000000000000000000..99531f6535348b99efcb29c8c3e9fb452aa99512 --- /dev/null +++ b/BACKUP @@ -0,0 +1,4 @@ +#!/bin/bash -eux + +echo "nothing to do :)" + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..a8acd0a03a5ba1bb2d96b996f202667f5431b1ae --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM indiepaas/apache + +# Download latest version of Wordpress into /app +RUN curl -L https://wordpress.org/latest.tar.gz | tar xz && \ + mv wordpress/* app && \ + mv /app/wp-content /wp-content && \ + curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \ + chmod +x wp-cli.phar && \ + mv wp-cli.phar /usr/local/bin/wp +ADD wp-config.php /app/wp-config.php + +# Add script to create 'wordpress' DB +ADD run-wordpress.sh /run-wordpress.sh +RUN chmod 755 /run-wordpress.sh + +# Expose environment variables +ENV DB_HOST **LinkMe** +ENV DB_PORT **LinkMe** +ENV DB_NAME wordpress +ENV DB_USER admin +ENV DB_PASS **ChangeMe** + +EXPOSE 80 +VOLUME ["/app/wp-content", "/app/.htaccess"] +CMD ["/run-wordpress.sh"] + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..d57fac46abab1ee15422134594b7b7cd197d1a42 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +db: + image: mysql + volumes: + - ./mysql/runtime:/var/lib/mysql + env_file: + - ./.env +web: + image: indiehosters/wordpress + links: + - db + volumes: + - ./wordpress/data:/app/wp-content + - ./wordpress/.htaccess:/app/.htaccess + - ./mysql/dump.sql:/initial_db.sql + env_file: + - ./.env + diff --git a/run-wordpress.sh b/run-wordpress.sh new file mode 100644 index 0000000000000000000000000000000000000000..942e32da1ed3511a93049a5636d8ae377553af2e --- /dev/null +++ b/run-wordpress.sh @@ -0,0 +1,71 @@ +#!/bin/bash +if [ ! "$(ls -A /app/wp-content)" ]; then + cp -av /wp-content/* /app/wp-content/ +fi + +DB_HOST=db +DB_PORT=3306 +export DB_PASS=$MYSQL_PASSWORD + +echo "=> Trying to connect to MySQL/MariaDB using:" +echo "========================================================================" +echo " Database Host Address: $DB_HOST" +echo " Database Port number: $DB_PORT" +echo " Database Name: $DB_NAME" +echo " Database Username: $DB_USER" +echo " Database Password: $DB_PASS" +echo "========================================================================" + +for ((i=0;i<10;i++)) +do + DB_CONNECTABLE=$(mysql -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT -e 'status' >/dev/null 2>&1; echo "$?") + if [[ DB_CONNECTABLE -eq 0 ]]; then + break + fi + sleep 5 +done + +if [[ $DB_CONNECTABLE -eq 0 ]]; then + DB_EXISTS=$(mysql -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT -e "SHOW DATABASES LIKE '"$DB_NAME"';" 2>&1 |grep "$DB_NAME" > /dev/null ; echo "$?") + + if [[ DB_EXISTS -eq 1 ]]; then + echo "=> Creating database $DB_NAME" + RET=$(mysql -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT -e "CREATE DATABASE $DB_NAME") + if [[ RET -ne 0 ]]; then + echo "Cannot create database for wordpress" + exit RET + fi + if [ -f /initial_db.sql ]; then + echo "=> Loading initial database data to $DB_NAME" + RET=$(mysql -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT $DB_NAME < /initial_db.sql) + if [[ RET -ne 0 ]]; then + echo "Cannot load initial database data for wordpress" + exit RET + fi + fi + echo "=> Done!" + echo "=> Installation of Wordpress" + PASS=`openssl rand -base64 15` + cd /app + wp --allow-root core install --url=https://${URL} --title=${URL} --admin_user=${EMAIL} --admin_password=${PASS} --admin_email=${EMAIL} + wp --allow-root plugin install wordpress-https + wp --allow-root plugin activate wordpress-https + echo "=> Done!" + echo "=============================================" + echo "to connect ${EMAIL}:${PASS}" + echo "=============================================" + else + echo "=> Skipped creation of database $DB_NAME – it already exists." + fi +else + echo "Cannot connect to Mysql" + exit $DB_CONNECTABLE +fi + +chown -R root:www-data /app +chmod -R 650 /app +chmod -R 770 /app/wp-content/ +chmod -R 660 /app/.htaccess + +exec /run.sh + diff --git a/wp-config.php b/wp-config.php new file mode 100644 index 0000000000000000000000000000000000000000..7382d5f0d527d7c337ef1f7cf2b9567b458d8fd7 --- /dev/null +++ b/wp-config.php @@ -0,0 +1,100 @@ +<?php +/** + * The base configurations of the WordPress. + * + * This file has the following configurations: MySQL settings, Table Prefix, + * Secret Keys, WordPress Language, and ABSPATH. You can find more information + * by visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing + * wp-config.php} Codex page. You can get the MySQL settings from your web host. + * + * This file is used by the wp-config.php creation script during the + * installation. You don't have to use the web site, you can just copy this file + * to "wp-config.php" and fill in the values. + * + * @package WordPress + */ + +define('FORCE_SSL_ADMIN', true); +if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') + $_SERVER['HTTPS']='on'; +$_SERVER["SERVER_PORT"]='443'; + +// ** MySQL settings - You can get this info from your web host ** // +/** The name of the database for WordPress */ +define('DB_NAME', getenv('DB_NAME')); + +/** MySQL database username */ +define('DB_USER', getenv('DB_USER')); + +/** MySQL database password */ +define('DB_PASSWORD', getenv('DB_PASS')); + +/** MySQL hostname */ +define('DB_HOST', getenv('DB_HOST').":".getenv('DB_PORT')); + +/** 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 + */ +define('AUTH_KEY', '--w,=nO-t>g:EOH>e-ZXs!7x(: W4:}1A2$E?Sn9P>TW-[=:u[nc-eQ<vIi<6|wh'); +define('SECURE_AUTH_KEY', 'PlM~WQ/9-~V:-3&be`nxuaghz@JyN!]SzVr_]lAM2b?QH(d(|`.z_;1jIE4kY&f+'); +define('LOGGED_IN_KEY', 'K]6*uCb-m~>zj5C1krtu:>2VT(WlI/Jl5T~Pov2-`r+Zb5s3i6&aIN$*/+k/~sLN'); +define('NONCE_KEY', '~; xvP`h^{Pl9zaD#/!f@M21BAk0#sKg>*P+=1LV+FY+;HNE)%Y`4(Xq|&})fCj^'); +define('AUTH_SALT', 'A2|G[jvSLB+z dy S/ S>(lLyzxDvJ8(ps1(F%~x]eRD`UHv(h*IDjye+SYV-a;O'); +define('SECURE_AUTH_SALT', '9cv/Hy~a;qr]4)i*udy-/$non@_:CU0SIdm-L[WH^k_}s:Jq[)HV,Wu8na<_;ef3'); +define('LOGGED_IN_SALT', '{d*4OCrk9x`|cb-4EBK7=ewJ3D]y%z,7mSEd:8?=eP![zD.O`<Uubt-u%@TA+x T'); +define('NONCE_SALT', 'z6G5thFC]JIW]|ZQIBgZ?zBb^!N#3-Un=)`!Xb/,Yd8[2&}.W{ITu?=PE0oZ,<8^'); + +/**#@-*/ + +/** + * 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 = 'wp_'; + +/** + * WordPress Localized Language, defaults to English. + * + * Change this to localize WordPress. A corresponding MO file for the chosen + * language must be installed to wp-content/languages. For example, install + * de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German + * language support. + */ +define('WPLANG', ''); + +/** + * 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. + */ +define('WP_DEBUG', false); + +/* That's all, stop editing! Happy blogging. */ + +/** Absolute path to the WordPress directory. */ +if ( !defined('ABSPATH') ) + define('ABSPATH', dirname(__FILE__) . '/'); + +/** Sets up WordPress vars and included files. */ +require_once(ABSPATH . 'wp-settings.php'); + +/** change permisssions for plugin installation */ +define("FS_METHOD","direct"); +define("FS_CHMOD_DIR", 0777); +define("FS_CHMOD_FILE", 0777);