From 389459eca7ea43ca69019b4c5574aad65bdd2f8d Mon Sep 17 00:00:00 2001
From: mnshantz <mnshantz@uwaterloo.ca>
Date: Tue, 9 Oct 2018 11:52:43 -0400
Subject: [PATCH] Update d8 files to work with multi-site and for d7 as well.

---
 build-scripts/drupal7/000-default.conf        |  2 +-
 build-scripts/drupal7/Dockerfile              | 25 ++++++----
 build-scripts/drupal7/docker-entrypoint-d7.sh |  7 +++
 build-scripts/drupal7/settings.conf           |  4 +-
 build-scripts/drupal8/000-default.conf        | 14 ++----
 build-scripts/drupal8/Dockerfile              | 47 ++++++++++++++++++-
 build-scripts/drupal8/docker-entrypoint.sh    |  4 ++
 build-scripts/drupal8/settings.conf           | 32 +++++++++++++
 build-scripts/drupal8/sites.php               |  8 ++++
 docker-compose.yml                            |  6 +--
 10 files changed, 121 insertions(+), 28 deletions(-)
 create mode 100644 build-scripts/drupal8/settings.conf
 create mode 100644 build-scripts/drupal8/sites.php

diff --git a/build-scripts/drupal7/000-default.conf b/build-scripts/drupal7/000-default.conf
index c565333..344b11d 100644
--- a/build-scripts/drupal7/000-default.conf
+++ b/build-scripts/drupal7/000-default.conf
@@ -1,7 +1,7 @@
 <VirtualHost *:80>
       DocumentRoot /var/www/drupal7
       ServerAdmin webmaster@localhost
-      ServerName d7
+      ServerName docker
       Redirect permanent / https://docker/
         <Directory />
             Options FollowSymLinks
diff --git a/build-scripts/drupal7/Dockerfile b/build-scripts/drupal7/Dockerfile
index 23a8cd4..87b1991 100644
--- a/build-scripts/drupal7/Dockerfile
+++ b/build-scripts/drupal7/Dockerfile
@@ -18,7 +18,10 @@ RUN apt-get update && \
 ## Add the repo to get the latest PHP versions
 RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
 RUN export LANG=en_US.UTF-8
-RUN add-apt-repository -y ppa:ondrej/php
+##RUN add-apt-repository -y ppa:ondrej/php
+
+## Need LC_ALL= otherwise adding the repos throws an ascii error.
+RUN LC_ALL=en_US.UTF-8 add-apt-repository -y ppa:ondrej/php
 
 ## Add the git repo so we can get the latest git (we need 2.9.2+)
 RUN add-apt-repository ppa:git-core/ppa
@@ -46,6 +49,7 @@ RUN apt-get install -y \
 	php5.6-mcrypt \
     php5.6-zip \
 	php-pear \
+    php-xml \
 	libapache2-mod-php5.6 \
     optipng \
     jpegoptim \
@@ -84,7 +88,6 @@ RUN composer global update
 # Unfortunately, adding the composer vendor dir to the PATH doesn't seem to work. So:
 RUN ln -s /root/.composer/vendor/bin/drush /usr/local/bin/drush
 
-################## BEGIN DRUPAL INSTALLATION ######################
 # Manually set up the apache environment variables
 ENV APACHE_RUN_USER www-data
 ENV APACHE_RUN_GROUP www-data
@@ -99,14 +102,18 @@ RUN openssl req -x509 -nodes -days 1825 -newkey rsa:2048 -keyout /tmp/apache.key
 RUN cp /tmp/apache.crt /etc/ssl/certs/server.crt
 RUN cp /tmp/apache.key /etc/ssl/private/server.key
 
+## Create the vagrant user so we can assign it later
+## RUN useradd vagrant -p vagrant
+## Add the "vagrant" user (because we are all familiar with having it)
+RUN useradd -d /home/vagrant -ms /bin/bash -g root -G sudo -p vagrant vagrant
+
 # Replace the default site configuration with our own.
 COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
 
-# Install Drupal.
-RUN drush dl -v -d drupal-7.59 --destination="/var/www" --drupal-project-rename="drupal7" && \
-	chown -R www-data:www-data /var/www/
-    
-RUN useradd vagrant -p vagrant
+## Install Drupal.
+RUN drush dl -v -d drupal-7.59 --destination="/var/www" --drupal-project-rename="drupal7"
+
+RUN	chown -R www-data:www-data /var/www/
 
 ## Install the drush registry_rebuild module
 RUN drush @none dl registry_rebuild
@@ -201,6 +208,4 @@ EXPOSE 443
 ENTRYPOINT ["docker-entrypoint-d7.sh"]
 
 # If no command is passed to the container, start Apache by default.
-CMD ["apachectl", "-D", "FOREGROUND"]
-
-##################### INSTALLATION END #####################
\ No newline at end of file
+CMD ["apachectl", "-D", "FOREGROUND"]
\ No newline at end of file
diff --git a/build-scripts/drupal7/docker-entrypoint-d7.sh b/build-scripts/drupal7/docker-entrypoint-d7.sh
index b2fd4b2..6222ee9 100644
--- a/build-scripts/drupal7/docker-entrypoint-d7.sh
+++ b/build-scripts/drupal7/docker-entrypoint-d7.sh
@@ -30,5 +30,12 @@ if [ -n "$APACHE_SITE_ALIAS" ]; then
      sed -i 's@^\s*ServerAlias.*@'"        ServerAlias ${APACHE_SITE_ALIAS}"'@'  /etc/apache2/sites-available/000-default.conf
 fi
 
+## Change default PHP to 5.6 (just to be sure).
+a2dismod php7.2 && a2enmod php5.6 && update-alternatives --set php /usr/bin/php5.6 && service apache2 restart
+
+## Change permissions on /var/www/drupal7
+chown -R vagrant:www-data /var/www/drupal7
+chmod -R g+w /var/www/drupal7
+
 # Now that we're set up, run whatever command was passed to the entrypoint.
 exec "$@"
diff --git a/build-scripts/drupal7/settings.conf b/build-scripts/drupal7/settings.conf
index 1b2ea44..b482f18 100644
--- a/build-scripts/drupal7/settings.conf
+++ b/build-scripts/drupal7/settings.conf
@@ -5,11 +5,11 @@ $UWhost = 'docker:4443';
 // Path to site root.
 $UWpref = 'fdsu1';
 // Name of site database.
-$UWdb = 'fdsu1';
+$UWdb = 'd7_fdsu1';
 //Username to connect to site database.
 $UWuser = 'drupal';
 // Password to connect to site database.
-$UWpass = 'verybadpassword';
+$UWpass = 'vagrant';
 // Hostname to connect to site database.
 $UWpri = 'db';
 
diff --git a/build-scripts/drupal8/000-default.conf b/build-scripts/drupal8/000-default.conf
index e50ee9f..3fda60a 100644
--- a/build-scripts/drupal8/000-default.conf
+++ b/build-scripts/drupal8/000-default.conf
@@ -1,5 +1,5 @@
 <VirtualHost *:80>
-      DocumentRoot /var/www/drupal
+      DocumentRoot /var/www/drupal8
       ServerAdmin webmaster@localhost
       ServerName docker
       Redirect permanent / https://docker/
@@ -14,9 +14,9 @@
             allow from all
         </Directory>
     </VirtualHost>
-<VirtualHost *:443>
+   <VirtualHost *:443>
       ServerAdmin webmaster@localhost
-      DocumentRoot /var/www/drupal
+      DocumentRoot /var/www/drupal8
       ServerName docker
       <Directory />
           Options FollowSymLinks
@@ -28,19 +28,14 @@
           Order allow,deny
           allow from all
       </Directory>
-
        ErrorLog /error.log
-
       # Possible values include: debug, info, notice, warn, error, crit,
       # alert, emerg.
       LogLevel warn
-
       CustomLog /access.log combined
-
         SSLEngine on
           SSLCertificateFile    /etc/ssl/certs/server.crt
           SSLCertificateKeyFile /etc/ssl/private/server.key
-
       Alias /doc/ /usr/share/doc/
       <Directory /usr/share/doc/>
           Options Indexes MultiViews FollowSymLinks
@@ -49,5 +44,4 @@
           Deny from all
           Allow from 127.0.0.0/255.0.0.0 ::1/128
       </Directory>
-
-</VirtualHost>
\ No newline at end of file
+  </VirtualHost>
\ No newline at end of file
diff --git a/build-scripts/drupal8/Dockerfile b/build-scripts/drupal8/Dockerfile
index f96fddd..ea25cb9 100644
--- a/build-scripts/drupal8/Dockerfile
+++ b/build-scripts/drupal8/Dockerfile
@@ -97,7 +97,7 @@ RUN sudo npm install npm@latest -g \
 RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
 
 # Add the "vagrant" user (because we are all familiar with having it)
-RUN useradd -d /home/vagrant -ms /bin/bash -g root -G sudo -p vagrant vagrant
+RUN useradd -d /home/vagrant -ms /bin/bash -g www-data -G sudo -p vagrant vagrant
 
 # Forward logs to docker log collector.
 RUN ln -sf /dev/stdout /var/log/apache2/access.log && \
@@ -127,7 +127,7 @@ ENV APACHE_PID_FILE /var/run/apache2.pid
 
 
 # Clone Drupal
-RUN drush dl -v -d drupal-8.5.6 --destination="/var/www" --drupal-project-rename="drupal8"
+RUN drush dl -v -d drupal-8.6.1 --destination="/var/www" --drupal-project-rename="drupal8"
 RUN echo "Cloned Drupal 8...."
 
 # Clone our WCMS profile
@@ -140,6 +140,49 @@ RUN cd /var/www/drupal8/profiles && \
 RUN cd /var/www/drupal8/sites/default && \
     cp default.settings.php settings.php
 
+RUN cd /var/www/drupal8 && \
+    ln -s . fdsu1 && \
+    ln -s . fdsu2 && \
+    ln -s . fdsu3 && \
+    ln -s . fdsu4
+
+## Copy the sites.php file to the Drupal 8 sites folder.
+COPY sites.php /var/www/drupal8/sites 
+
+RUN mkdir /var/www/drupal8/sites/docker.fdsu1 
+RUN mkdir /var/www/drupal8/sites/docker.fdsu1/files 
+RUN mkdir /var/www/drupal8/sites/docker.fdsu1/files/temp
+RUN mkdir /var/www/drupal8/sites/docker.fdsu1/modules
+## Create settings.php file
+COPY settings.conf /var/www/drupal8/sites/docker.fdsu1/settings.php
+RUN mkdir /var/www/drupal8/sites/docker.fdsu2 
+RUN mkdir /var/www/drupal8/sites/docker.fdsu2/files
+RUN mkdir /var/www/drupal8/sites/docker.fdsu2/files/temp
+RUN mkdir /var/www/drupal8/sites/docker.fdsu2/modules
+## Create settings.php file
+COPY settings.conf /var/www/drupal8/sites/docker.fdsu2/settings.php
+RUN mkdir /var/www/drupal8/sites/docker.fdsu3
+RUN mkdir /var/www/drupal8/sites/docker.fdsu3/files
+RUN mkdir /var/www/drupal8/sites/docker.fdsu3/files/temp
+RUN mkdir /var/www/drupal8/sites/docker.fdsu3/modules
+## Create settings.php file
+COPY settings.conf /var/www/drupal8/sites/docker.fdsu3/settings.php
+RUN mkdir /var/www/drupal8/sites/docker.fdsu4
+RUN mkdir /var/www/drupal8/sites/docker.fdsu4/files
+RUN mkdir /var/www/drupal8/sites/docker.fdsu4/files/temp
+RUN mkdir /var/www/drupal8/sites/docker.fdsu4/modules
+## Create settings.php file
+COPY settings.conf /var/www/drupal8/sites/docker.fdsu4/settings.php
+
+RUN mkdir /var/www/drupal8/sites/docker.fdsu1/files/config_acqTmp && \
+    mkdir /var/www/drupal8/sites/docker.fdsu1/files/config_acqTmp/sync
+RUN mkdir /var/www/drupal8/sites/docker.fdsu2/files/config_acqTmp && \
+    mkdir /var/www/drupal8/sites/docker.fdsu2/files/config_acqTmp/sync
+RUN mkdir /var/www/drupal8/sites/docker.fdsu3/files/config_acqTmp && \
+    mkdir /var/www/drupal8/sites/docker.fdsu3/files/config_acqTmp/sync
+RUN mkdir /var/www/drupal8/sites/docker.fdsu4/files/config_acqTmp && \
+    mkdir /var/www/drupal8/sites/docker.fdsu4/files/config_acqTmp/sync
+
 # Add Drupal permissions to the drupal folder
 RUN chown -R vagrant:www-data /var/www/drupal8
 RUN chmod -R g+w /var/www/drupal8
diff --git a/build-scripts/drupal8/docker-entrypoint.sh b/build-scripts/drupal8/docker-entrypoint.sh
index 317e4ae..5ee7a61 100644
--- a/build-scripts/drupal8/docker-entrypoint.sh
+++ b/build-scripts/drupal8/docker-entrypoint.sh
@@ -36,5 +36,9 @@ if [ -n "$APACHE_SITE_ALIAS" ]; then
      sed -i 's@^\s*ServerAlias.*@'"        ServerAlias ${APACHE_SITE_ALIAS}"'@'  /etc/apache2/sites-available/000-default.conf
 fi
 
+## Set permissions for drupal8 and html folder
+chown -R vagrant:www-data /var/www
+chmod -R g+w /var/www
+
 # Now that we're set up, run whatever command was passed to the entrypoint.
 exec "$@"
diff --git a/build-scripts/drupal8/settings.conf b/build-scripts/drupal8/settings.conf
new file mode 100644
index 0000000..19c845a
--- /dev/null
+++ b/build-scripts/drupal8/settings.conf
@@ -0,0 +1,32 @@
+<?php
+// Server domain name.
+$UWhost = 'docker:4444';
+// Path to site root.
+$UWpref = 'fdsu1';
+// Name of site database.
+$UWdb = 'd8_fdsu1';
+// Username to connect to site database.
+$UWuser = 'drupal';
+// Password to connect to site database.
+$UWpass = 'vagrant';
+// Host name to connect to site database.
+$UWpri = 'db';
+
+require_once(DRUPAL_ROOT . '/profiles/uw_base_profile/drupal-settings.php');
+
+// File system settings.
+$settings['file_default_scheme'] = 'public';
+$settings['file_private_path'] = 'sites/docker.fdsu1/files/private/';
+$settings['file_public_path'] = 'sites/docker.fdsu1/files';
+$settings['file_temporary_path'] = 'sites/docker.fdsu1/files/temp/';
+$settings['file_chmod_directory'] = 02775;
+$settings['file_chmod_file'] = 0664;
+
+// D8 required settings.
+$settings['hash_salt'] = 'N2I1NDliYWNjNGJjYzUzODc0MDg3NTc2MTgwMGMyZTdhZGZiZGE5YTdkZGU4YTExMGZkNjhhMT';
+$settings['install_profile'] = 'uw_base_profile';
+$settings['trusted_host_patterns'] = ['^docker$',];
+$config_directories['sync'] = 'sites/docker.fdsu1/files/config_acqTmp/sync';
+if (file_exists(__DIR__ . '/settings.local.php')) {
+    include __DIR__ . '/settings.local.php';
+}
\ No newline at end of file
diff --git a/build-scripts/drupal8/sites.php b/build-scripts/drupal8/sites.php
new file mode 100644
index 0000000..7d3c6e5
--- /dev/null
+++ b/build-scripts/drupal8/sites.php
@@ -0,0 +1,8 @@
+<?php
+
+    $sites = array(
+        'docker.fdsu1' => 'fdsu1',
+        'docker.fdsu2' => 'fdsu2',
+        'docker.fdsu3' => 'fdsu3',
+        'docker.fdsu4' => 'fdsu4',
+      );
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index 6afb13d..aaca59d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -31,10 +31,10 @@ services:
       - ./db-backups:/var/mysql/backups:delegated
     environment:
       MYSQL_ROOT_PASSWORD: root
-      MYSQL_DATABASE: drupal8db
+      MYSQL_DATABASE: d8_fdsu1
       MYSQL_USER: drupal
-      MYSQL_PASSWORD: verybadpassword
-      ADDITIONAL_DATABASES: fdsu1 fdsu2 fdsu3 fdsu4
+      MYSQL_PASSWORD: vagrant
+      ADDITIONAL_DATABASES: d7_fdsu1 d7_fdsu2 d7_fdsu3 d7_fdsu4 d8_fdsu2 d8_fdsu3 d8_fdsu4
     ports:
       - "3306:3306"
       
-- 
GitLab