From 383797d3e0c7aeb19d50a3a9b6cf47ee1fefc9d7 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Sat, 13 Aug 2016 15:41:03 +0200 Subject: [PATCH] Latest changes --- Dockerfile | 31 ++++++++++----------- README.md | 9 ------- add-docker-vhost.sh | 28 +++++++++++++++++++ disable-curl.php | 17 ++++++++++++ install-wc.sh | 66 ++++++++++++++++++++++++++++++--------------- run.sh | 11 -------- wc-docker-create.sh | 22 +++++++++++++++ 7 files changed, 128 insertions(+), 56 deletions(-) create mode 100755 add-docker-vhost.sh create mode 100644 disable-curl.php delete mode 100755 run.sh create mode 100755 wc-docker-create.sh diff --git a/Dockerfile b/Dockerfile index 92861a9..116646c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,21 @@ -FROM ubuntu:14.04 -MAINTAINER Maciej Osyda <maciej.osyda@gmail.com> +FROM wordpress:latest +MAINTAINER Open Tools <office@open-tools.net> -RUN DEBIAN_FRONTEND=noninteractive apt-get -y install unzip curl +RUN apt-get update -ADD run.sh /run.sh -RUN chmod +x /run.sh -RUN mkdir -p /var/www/html +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -o Dpkg::Options::='--force-confnew' -y --no-install-recommends libapache2-mod-php5 php5-mysql + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends unzip curl wget sudo vim aptitude less +RUN rm -rf /var/lib/apt/lists/* -ADD install-wc.sh /var/www/html/install-wc.sh -RUN chmod +x /var/www/html/install-wc.sh +RUN curl -L "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" -o /usr/bin/wp-cli && \ + chmod +x /usr/bin/wp-cli -# apache config -ENV APACHE_RUN_USER www-data -ENV APACHE_RUN_GROUP www-data -RUN chown -R www-data:www-data /var/www/ +ADD disable-curl.php /var/www/html/wp-content/plugins/disable-curl/disable-curl.php + +ADD install-wc.sh /install-wc.sh +RUN chmod +x /install-wc.sh && chown www-data.www-data /install-wc.sh -VOLUME /var/www/html - -ENTRYPOINT ["/run.sh"] +VOLUME ["/var/www/html"] diff --git a/README.md b/README.md index b445183..f1ef6e5 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,3 @@ Docker data container for woocommerce. Contains wordpress + woocommerce installation script. - -This image is hosted on dockerhub and should be run with docker-compose together with repos below: - -#### docker-compose specification file and start script -https://github.com/SeamlessDistribution/woocommerce-seqr-payment-gateway-docker - -#### Seqr payment plugin -https://github.com/SeamlessDistribution/woocommerce-seqr-payment-gateway - diff --git a/add-docker-vhost.sh b/add-docker-vhost.sh new file mode 100755 index 0000000..3220ff1 --- /dev/null +++ b/add-docker-vhost.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +if [ $# -lt 2 ]; then + echo + echo " add-docker-vhost.sh DOMAINNAME PORT" + echo + echo " Add a virtual host entry for DOMAINNAME.dev that ProxyPasses to the given port on localhost." + echo " Needs admin privileges and thus should be run through sudo." + exit +fi + +NAME=$1 +PORT=$2 + +sudo echo "<VirtualHost *:80> + ServerName $NAME.dev + ServerAdmin $NAME@demo.open-tools.net + + ProxyPreserveHost on + ProxyPass / http://127.0.0.1:$PORT/ + ProxyPassReverse / http://127.0.0.1:$PORT/ +</VirtualHost> + +" >> /etc/apache2/sites-enabled/development.conf + +service apache2 restart + +echo "Created virtual Host $NAME.dev, proxied on port $PORT" diff --git a/disable-curl.php b/disable-curl.php new file mode 100644 index 0000000..5cb5e1b --- /dev/null +++ b/disable-curl.php @@ -0,0 +1,17 @@ +<?php +/** + * Plugin Name: Disable Curl + * Plugin URI: http://www.open-tools.net/ + * Description: Disables CURL transport and fix connection problems + * Author: OpenTools + * Author URI: http://www.open-tools.net + * Version: 0.1 + * Text Domain: disable-curl + */ + +if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly + +add_filter( 'http_api_transports', function() +{ + return array( 'streams' ); +}); diff --git a/install-wc.sh b/install-wc.sh index f18dae3..57789e2 100755 --- a/install-wc.sh +++ b/install-wc.sh @@ -1,29 +1,53 @@ #!/bin/bash -x -if [ -z "$1" ] - then - echo "First argument should be a wordpress version (at least 3.7). No version supplied" - exit 1 -fi +WC_HOST=$1 +WC_SITENAME=${2:-OpenTools WC Test Site} +WC_VER=$3 -if [ -z "$2" ] - then - echo "Second argument should be a wordpress version. No version supplied" - exit 1 -fi +cd /var/www/html -# Wait for MySQL -while ! mysqladmin ping -h localhost --silent; do - sleep 1 +pwd +# sudo -u www-data /usr/bin/wp-cli core download --version=$1 --allow-root +# sudo -u www-data /usr/bin/wp-cli core config --dbname=wordpress --dbuser=root --allow-root +sudo -u www-data /usr/bin/wp-cli core install --url="http://wc-$WC_HOST.dev/" --title="${WC_SITENAME}" --admin_user=opentools --admin_password=opentools --admin_email="wc-${WC_HOST}@demo.open-tools.net" +sudo -u www-data /usr/bin/wp-cli db query --allow-root "UPDATE wp_options SET option_value='http://wc-${WC_HOST}.dev/' WHERE option_name IN ('siteurl', 'home')" + +for p in debug-bar debug-bar-actions-and-filters-addon debug-bar-hook-log; do + sudo -u www-data /usr/bin/wp-cli plugin install $p --activate done +sudo -u www-data /usr/bin/wp-cli plugin update --all -mysql -u root -e "CREATE DATABASE IF NOT EXISTS \`wordpress\` CHARACTER SET utf8 COLLATE utf8_general_ci;" +# WooCommerce should NOT be updated! +if [ -z "$WC_VER" ]; then + sudo -u www-data /usr/bin/wp-cli plugin install woocommerce --activate + sudo -u www-data /usr/bin/wp-cli plugin update woocommerce +else + sudo -u www-data /usr/bin/wp-cli plugin install woocommerce --activate --version="$WC_VER" +fi -cd /var/www/html -/var/www/html/wp-cli core download --version=$1 --allow-root -/var/www/html/wp-cli core config --dbname=wordpress --dbuser=root --allow-root -/var/www/html/wp-cli core install --url=http://localhost:8080/wordpress/ --title=WordPress --admin_user=admin --admin_password=admin123 --admin_email=somefakeemail@fakedomain.com --allow-root -/var/www/html/wp-cli db query --allow-root "UPDATE wp_options SET option_value='http://localhost:8080' WHERE option_name IN ('siteurl', 'home')" +# Disable broken CURL transport (API has changed, but WP never updated) +# CANNOT BE DONE IN wp-config.php, BECAUSE THEN wp-cli BREAKS (FILTERS ARE NOT AVAILBLE) +sudo -u www-data /usr/bin/wp-cli plugin activate disable-curl +sudo -u www-data /usr/bin/wp-cli plugin activate woocommerce-advanced-ordernumbers/woocommerce-advanced-ordernumbers +sudo -u www-data /usr/bin/wp-cli plugin activate woocommerce-shipping-by-rules/woocommerce-advanced-shipping-by-rules + + +# Before we can setup the menu, we need to run through the WC setup wizzard! +echo "Please run the WooCommerce Setup Wizzard at:" +echo " http://wc-${WC_HOST}.dev/wp-admin/admin.php?page=wc-setup" +echo "" +echo "Press [Enter] when you have finished..." +read var_name + + +# Setup menu +sudo -u www-data /usr/bin/wp-cli menu create "Main Menu" +sudo -u www-data /usr/bin/wp-cli menu location assign main-menu primary +for page in shop cart checkout my-account; do + id=$(wp-cli post list --post_type=page --name="$page" --field=ID --allow-root) + sudo -u www-data /usr/bin/wp-cli menu item add-post main-menu $id +done + +# Setup WooCommerce Products +sudo -u www-data /usr/bin/wp-cli wc product create --title="Test Product" --sku="test-sku" --regular_price=15 --status="publish" -/var/www/html/wp-cli plugin install woocommerce --activate --allow-root --version=$2 -/var/www/html/wp-cli plugin activate woocommerce-seqr --allow-root diff --git a/run.sh b/run.sh deleted file mode 100755 index 3de1ba2..0000000 --- a/run.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -curl -O -s https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -chmod +x wp-cli.phar -sudo mv wp-cli.phar /var/www/html/wp-cli - -if [ -n "$1" ]; then - exec $1 -elseif - exec /bin/true -fi diff --git a/wc-docker-create.sh b/wc-docker-create.sh new file mode 100755 index 0000000..4dd8c1e --- /dev/null +++ b/wc-docker-create.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +if [ $# -lt 3 ]; then + echo "Usage: wc-docker-create.sh NAME PORT SITE_NAME" + exit +fi + +NAME=$1 +PORT=$2 +SITE=$3 +SCRIPTDIR="$(dirname "$0")" + +# docker run -p $PORT:80 -d --name wc-$NAME -v /home/reinhold/OpenTools/Software/WooCommerce/AdvancedOrdernumbers:/var/www/html/wp-content/plugins/woocommerce-advanced-ordernumbers -v /home/reinhold/OpenTools/Software/WooCommerce/ShippingByRules:/var/www/html/wp-content/plugins/woocommerce-shipping-by-rules --link mysql-dev:mysql -e WORDPRESS_DB_NAME=wc_$NAME agrothberg/docker-woocommerce:latest + +docker run -p $PORT:80 -d --name wc-$NAME -v /home/reinhold/OpenTools/Software/WooCommerce/AdvancedOrdernumbers:/var/www/html/wp-content/plugins/woocommerce-advanced-ordernumbers -v /home/reinhold/OpenTools/Software/WooCommerce/ShippingByRules:/var/www/html/wp-content/plugins/woocommerce-shipping-by-rules --link mysql-dev:mysql -e WORDPRESS_DB_NAME=wc_$NAME opentools/woocommerce:latest + +sudo $SCRIPTDIR/add-docker-vhost.sh wc-$NAME $PORT + +echo "Waiting for Docker to set up the database etc. Otherwise the wp-cli setup scripts cannot access the DB and will fail!" +sleep 15 + +docker exec -ti wc-$NAME /install-wc.sh "$NAME" "$SITE" -- GitLab