Просмотр исходного кода

Fix bug on the installation elgg

Kévio Castro 11 лет назад
Родитель
Сommit
d6668d1676
5 измененных файлов с 73 добавлено и 58 удалено
  1. 3 11
      Dockerfile
  2. 1 0
      docker-compose.yml
  3. 0 45
      docker-install.php
  4. 2 2
      elgg-install-wrapper.sh
  5. 67 0
      elgg-install.php

+ 3 - 11
Dockerfile

@@ -1,7 +1,6 @@
 FROM php:5.6-apache
 COPY docker_config/php.ini /usr/local/etc/php/
 
-	# Elgg requirements
 RUN apt-get update && apt-get install -y \
         libfreetype6-dev \
         libjpeg62-turbo-dev \
@@ -9,15 +8,12 @@ RUN apt-get update && apt-get install -y \
         libpng12-dev \
         netcat
 
+# Elgg requirements
 RUN docker-php-ext-install pdo pdo_mysql mysql
 RUN docker-php-ext-install mbstring gd
 
 WORKDIR /var/www/html/
 
-
-# Email server
-# RUN apt-get -y install ssmtp
-
 #Configs apache
 RUN a2enmod rewrite
 
@@ -25,7 +21,6 @@ RUN a2enmod rewrite
 ENV TIMEZONE="America/Sao_Paulo"
 RUN cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
 
-
 # set defaults or env vars for Elgg and MySQL
 # MySQL
 ENV MYSQL_USER=${MYSQL_USER:-"root"}
@@ -57,8 +52,5 @@ ENV ELGG_PATH=${ELGG_PATH:-"/var/www/html/"}
 # 2 is ACCESS_PUBLIC
 ENV ELGG_SITE_ACCESS=${ELGG_SITE_ACCESS:-"2"}
 
-COPY docker-install.php /docker-install.php
-COPY docker-entrypoint.sh /docker-entrypoint.sh
-RUN chmod +x /docker-entrypoint.sh
-
-ENTRYPOINT ["/docker-entrypoint.sh"]
+COPY . /elgg-docker/
+RUN chmod +x /elgg-docker/docker-entrypoint.sh

+ 1 - 0
docker-compose.yml

@@ -6,6 +6,7 @@ web:
     - mysql
   volumes:
     - ~/www/Elgg/:/var/www/html/
+    - ~/www/elgg-docker/:/elgg-docker/
 mysql:
   image: mysql:5.6  
   environment:

+ 0 - 45
docker-install.php

@@ -1,45 +0,0 @@
-<?php 
-/**
- * Docker CLI Elgg installer script 
- */
-$elgg_path = getenv('ELGG_PATH');
-
-$autoload_path = '/var/www/html/vendor/autoload.php';
-$autoload_available = include_once($autoload_path);
-if (!$autoload_available) {
-	die("Couldn't include '$autoload_path'. Did you run `composer install`?");
-}
-
-// if (file_exists($elgg_path.'composer.lock')) {
-// 	echo "Running method \\Elgg\\Composer\\PostInstall::execute() to recreate symbolic links of plugins.\n";
-// }
-
-$installer = new ElggInstaller();
-
-$params = array(
-	// database parameters
-	'dbuser' => getenv('ELGG_DB_USER'),
-	'dbpassword' => getenv('ELGG_DB_PASS'),
-	'dbname' => getenv('ELGG_DB_NAME'),
-	'dbhost' => getenv('ELGG_DB_HOST'),
-	'dbprefix' => getenv('ELGG_DB_PREFIX'),
-	// site settings
-	'sitename' => getenv('ELGG_SITE_NAME'),
-	'siteemail' => getenv('ELGG_SITE_EMAIL'),
-	'wwwroot' => getenv('ELGG_WWW_ROOT'),
-	'dataroot' => getenv('ELGG_DATA_ROOT'),
-	// admin account
-	'displayname' => getenv('ELGG_DISPLAY_NAME'),
-	'email' => getenv('ELGG_EMAIL'),
-	'username' => getenv('ELGG_USERNAME'),
-	'password' => getenv('ELGG_PASSWORD'),
-	'path' => getenv('ELGG_PATH')
-);
-
-if (strlen($params['password']) < 6) {
-    echo "Elgg Admin password must be at least 6 characters long.\n";
-    exit(1);
-}
-
-
-$installer->batchInstall($params, true);

+ 2 - 2
docker-entrypoint.sh → elgg-install-wrapper.sh

@@ -1,7 +1,7 @@
 #!/bin/sh
 # Wait for database to get available
 
-MYSQL_LOOPS="100"
+MYSQL_LOOPS="20"
 MYSQL_HOST="$ELGG_DB_HOST"
 
 
@@ -17,4 +17,4 @@ while ! netcat $MYSQL_HOST $MYSQL_PORT >/dev/null 2>&1 < /dev/null; do
   sleep 1
 done
 
-php	/docker-install.php
+php	/elgg-docker/elgg-install.php

+ 67 - 0
elgg-install.php

@@ -0,0 +1,67 @@
+<?php 
+/**
+ * Docker CLI Elgg installer script 
+ */
+$autoload_path = '/var/www/html/vendor/autoload.php';
+$autoload_available = include_once($autoload_path);
+if (!$autoload_available) {
+	die("Couldn't include '$autoload_path'. Did you run `composer install`?");
+}
+
+$params = array(
+	// database parameters
+	'dbuser' => getenv('ELGG_DB_USER'),
+	'dbpassword' => getenv('ELGG_DB_PASS'),
+	'dbname' => getenv('ELGG_DB_NAME'),
+	'dbhost' => getenv('ELGG_DB_HOST'),
+	'dbprefix' => getenv('ELGG_DB_PREFIX'),
+	// site settings
+	'sitename' => getenv('ELGG_SITE_NAME'),
+	'siteemail' => getenv('ELGG_SITE_EMAIL'),
+	'wwwroot' => getenv('ELGG_WWW_ROOT'),
+	'dataroot' => getenv('ELGG_DATA_ROOT'),
+	// admin account
+	'displayname' => getenv('ELGG_DISPLAY_NAME'),
+	'email' => getenv('ELGG_EMAIL'),
+	'username' => getenv('ELGG_USERNAME'),
+	'password' => getenv('ELGG_PASSWORD'),
+	'path' => getenv('ELGG_PATH')
+);
+
+if (strlen($params['password']) < 6) {
+    echo "Elgg Admin password ({$params['password']}) must be at least 6 characters long.\n";
+    exit(1);
+}
+
+$createHtaccess = (file_exists($params['path'].'.htaccess')) ? false : true;
+
+$installer = new ElggInstaller();
+$installer->batchInstall($params, $createHtaccess);
+
+/**
+ * Elgg create symbolic links on instalation with composer 
+ * See "post-install-cmd": "\\Elgg\\Composer\\PostInstall::execute", for details.
+ * Links are created on your local machine.
+ * The links need to be changed to the container directories
+ */
+$path_mod_root = getenv('ELGG_PATH').'mod/';
+$mods = scandir($path_mod_root);
+
+foreach ($mods as $key => $folder) {
+	if (is_link($path_mod_root.$folder)) {
+		unlink($path_mod_root.$folder);
+	}
+}
+
+$path_mod_vendor = getenv('ELGG_PATH').'vendor/elgg/elgg/mod/';
+$mods = scandir($path_mod_vendor);
+
+foreach ($mods as $key => $folder) {
+	if (is_dir($path_mod_vendor.$folder) && 
+		!is_link($path_mod_root.$folder) &&
+		!is_dir($path_mod_root.$folder)) {
+		symlink($path_mod_vendor.$folder, $path_mod_root.$folder);	
+	}
+}
+
+exit(0);