diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..f79c1c2d9fa5c9c7adb3febb8d6d3c458863b827 --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +all: j3vm3 +j3vm3: FORCE + cd j3vm3_full && docker build -t registry.open-tools.net/opentools/docker-virtuemart/j3vm3:latest . + +push: + cd j3vm3_full && docker push +FORCE: diff --git a/add-docker-vhost.sh b/add-docker-vhost.sh new file mode 100755 index 0000000000000000000000000000000000000000..04e932f752cceccdba03a01a6362a658b36b219b --- /dev/null +++ b/add-docker-vhost.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +if [ $# -lt 2 ]; then + echo + echo " add-docker-vhost.sh DOMAINNAME PORT" + echo + echo " Add a virtual host entry for DOMAINNAME.test 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.test + ServerAlias $NAME.lacolhost.com + 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.test, proxied on port $PORT" diff --git a/j3vm3_full/Dockerfile b/j3vm3_full/Dockerfile index e36a838df509e29378d2d81cbb24a3c7bc4fdc1e..74817341900c826103ec51198ead001bd8f77421 100644 --- a/j3vm3_full/Dockerfile +++ b/j3vm3_full/Dockerfile @@ -1,4 +1,4 @@ -FROM php:5.6-apache +FROM php:7.2-apache MAINTAINER Reinhold Kainhofer <reinhold@kainhofer.com> # Enable Apache Rewrite Module @@ -7,7 +7,7 @@ RUN a2enmod rewrite RUN apt-get update # Install PHP extensions -RUN apt-get install -y libpng12-dev libjpeg-dev zip unzip sudo \ +RUN apt-get install -y libpng-dev libjpeg-dev zip unzip sudo \ && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ && docker-php-ext-install gd RUN docker-php-ext-install mysqli @@ -24,10 +24,10 @@ RUN apt-get install -y supervisor # Define Joomla version and expected SHA1 signature -ENV J_VERSION 3.6.2 -ENV VM_VERSION 3.0.18 -ENV VM_DLDIR 1023 -ENV VM_MD5 2a94ed631d8b6765e8b4f7983e53c24c +ENV J_VERSION 3.8.3 +ENV VM_VERSION 3.2.12 +ENV VM_DLDIR 1112 +ENV VM_MD5 e26312d5f1b28d58cece51a160f8cbe6 ENV VM_POSTFIX "" # Download package and extract to web volume diff --git a/j3vm3_full/docker-entrypoint.sh b/j3vm3_full/docker-entrypoint.sh index 6c1bf43df8f3d7227d09cb6ed51a0d0f3a7d0867..ea903a1acda11067376663bc399f2c862b4989c6 100755 --- a/j3vm3_full/docker-entrypoint.sh +++ b/j3vm3_full/docker-entrypoint.sh @@ -18,7 +18,8 @@ if [[ ! -e "/etc/opentools-docker-configured" ]]; then fi # If the DB user is 'root' and no DB password is given, then use the MySQL root password env var - : ${JOOMLA_DB_USER:=root} + : ${JOOMLA_DB_NAME:=virtuemart} + : ${JOOMLA_DB_USER:=virtuemart} if [ "$JOOMLA_DB_USER" = 'root' ]; then : ${JOOMLA_DB_PASSWORD:=$MYSQL_ENV_MYSQL_ROOT_PASSWORD} fi @@ -31,10 +32,10 @@ if [[ ! -e "/etc/opentools-docker-configured" ]]; then MYSQL_LOCAL=1 JOOMLA_DB_HOST="127.0.0.1" if [ -z "${JOOMLA_DB_PASSWORD}" ]; then - JOOMLA_DB_PASSWORD='root' - echo >&2 "No MySQL root password given. Assuming password 'root'." + JOOMLA_DB_PASSWORD='virtuemart' + echo >&2 "No MySQL password given. Assuming password 'virtuemart'." fi - echo >&2 " Root password is ${JOOMLA_DB_PASSWORD}." + echo >&2 " MySQL password is ${JOOMLA_DB_PASSWORD} for user ${JOOMLA_DB_USER}." # Temporarily start the mysql daemon to set up the database and shut it # down again (supervisord will start it at the very end) @@ -52,7 +53,9 @@ if [[ ! -e "/etc/opentools-docker-configured" ]]; then sleep 1 done echo - mysqladmin --password=root password "${JOOMLA_DB_PASSWORD}" + /usr/bin/mysqladmin --user=root --password=root status + /usr/bin/mysqladmin --user=root --password=root create "${JOOMLA_DB_NAME}" + echo "GRANT ALL PRIVILEGES ON *.* to '${JOOMLA_DB_USER}'@'%' IDENTIFIED BY '${JOOMLA_DB_PASSWORD}';" | mysql --user=root --password=root ${JOOMLA_DB_NAME} # enable mysqld in the supervisor config cp /etc/supervisor/conf.d/mysql.conf.save /etc/supervisor/conf.d/mysql.conf @@ -60,7 +63,6 @@ if [[ ! -e "/etc/opentools-docker-configured" ]]; then # Now set up the Database for Joomla/VirtueMart: - : ${JOOMLA_DB_NAME:=virtuemart} if [ -z "$JOOMLA_DB_PASSWORD" ]; then echo >&2 "error: missing required JOOMLA_DB_PASSWORD environment variable" @@ -102,10 +104,14 @@ if [[ ! -e "/etc/opentools-docker-configured" ]]; then chown www-data:www-data .htaccess fi + echo "database host: $JOOMLA_DB_HOST" + echo sed 's/default="localhost"/default="'$JOOMLA_DB_HOST'"/; - s/\(db_user.*\)$/\1 default="'$JOOMLA_DB_USER'"/; - s/\(db_pass.*\)$/\1 default="'$JOOMLA_DB_PASSWORD'"/; - s/\(db_name.*\)$/\1 default="'$JOOMLA_DB_NAME'"/' installation/model/forms/database.xml > installation/model/forms/database.xml.new + s/default="127.0.0.1"/default="'$JOOMLA_DB_HOST'"/; + s/\(name=.*db_user.*\)$/\1 default="'$JOOMLA_DB_USER'"/; + s/\(name=.*db_pass.*\)$/\1 default="'$JOOMLA_DB_PASSWORD'"/; + s/\(name=.*db_name.*\)$/\1 default="'$JOOMLA_DB_NAME'"/; + ' installation/model/forms/database.xml > installation/model/forms/database.xml.new mv installation/model/forms/database.xml.new installation/model/forms/database.xml echo >&2 "Complete! Virtuemart has been successfully copied to $(pwd)" @@ -116,16 +122,24 @@ if [[ ! -e "/etc/opentools-docker-configured" ]]; then : ${JOOMLA_ADMIN_PASSWORD:=admin} : ${JOOMLA_ADMIN_EMAIL:=admin@example.com} : ${JOOMLA_SITE_NAME:=Joomla Installation} - if [ -z "$JOOMLA_DB_PREFIX" ]; then - DBPREFIX="--dbprefix=\"${JOOMLA_DB_PREFIX}_\"" + if [ -n "$JOOMLA_DB_PREFIX" ]; then + DBPREFIX="--db-prefix=\"${JOOMLA_DB_PREFIX}_\"" fi -# echo "Installing Joomla/VirtueMart site $JOOMLA_SITE_NAME using the CLI and database host $JOOMLA_DB_HOST" -# php ./installation/install.php --name "$JOOMLA_SITE_NAME" \ -# --admin-user "$JOOMLA_ADMIN_USER" --admin-pass "$JOOMLA_ADMIN_PASSWORD" --admin-email "$JOOMLA_ADMIN_EMAIL" \ -# --db-host "$JOOMLA_DB_HOST" --db-user "$JOOMLA_DB_USER" --db-pass "$JOOMLA_DB_PASSWORD" --db-name "$JOOMLA_DB_NAME" $DBPREFIX && \ -# rm -rf "./installation/" -# chown www-data:www-data configuration.php + # insert the access and site values in the installer forms so that the user only has to press the buttons to install + sed 's/\(name=.*site_name.*\)$/\1 default="'"${JOOMLA_SITE_NAME}"'"/; + s/\(name=.*admin_email.*\)$/\1 default="'$JOOMLA_ADMIN_EMAIL'"/; + s/\(name=.*admin_user.*\)$/\1 default="'$JOOMLA_ADMIN_USER'"/; + s/\(name=.*admin_password.*\)$/\1 default="'$JOOMLA_ADMIN_PASSWORD'"/; + ' installation/model/forms/site.xml > installation/model/forms/site.xml.new + mv installation/model/forms/site.xml.new installation/model/forms/site.xml + + echo "Installing Joomla/VirtueMart site $JOOMLA_SITE_NAME using the CLI and database host $JOOMLA_DB_HOST" + sudo -u www-data php ./installation/install.php --name="$JOOMLA_SITE_NAME" \ + --admin-user="$JOOMLA_ADMIN_USER" --admin-pass="$JOOMLA_ADMIN_PASSWORD" --admin-email="$JOOMLA_ADMIN_EMAIL" \ + --db-host="$JOOMLA_DB_HOST" --db-user="$JOOMLA_DB_USER" --db-pass="$JOOMLA_DB_PASSWORD" --db-name="$JOOMLA_DB_NAME" --sample="sample_virtuemart.sql" $DBPREFIX && \ + rm -rf "./installation/" + chown www-data:www-data configuration.php for p in /usr/src/virtuemart/*.zip; do diff --git a/vm-docker-create.sh b/vm-docker-create.sh new file mode 100755 index 0000000000000000000000000000000000000000..3ab421f4b4b34be6109a1947dc4a4b6cb1f96ad6 --- /dev/null +++ b/vm-docker-create.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +REPO=registry.open-tools.net/opentools/docker-virtuemart/j3vm3:latest + +if [ $# -lt 3 ]; then + echo "Usage: vm-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 vm-$NAME -e JOOMLA_DB_USER=virtuemart -e JOOMLA_DB_PASSWORD=virtuemart -e JOOMLA_ADMIN_USER=opentools -e JOOMLA_ADMIN_PASSWORD=opentools -e JOOMLA_DB_NAME=vm_$NAME -e JOOMLA_SITE_NAME="${SITE}" -e JOOMLA_ADMIN_EMAIL="demo@demo.open-tools.net" $REPO + +sudo $SCRIPTDIR/add-docker-vhost.sh vm-$NAME $PORT + +echo "Please direct your browser to the newly installed site to finalize your Virtuemart installation: + + http://vm-$NAME.test/ + + User: opentools + Pass: opentools + + " +# docker exec -ti wc-$NAME /install-wc.sh "wc-${NAME}.test" "$SITE"