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