Эх сурвалжийг харах

script to wait mysql, and then install elgg

Kévio Castro 11 жил өмнө
parent
commit
1a0308ddeb

+ 6 - 5
Dockerfile

@@ -1,18 +1,18 @@
 FROM php:5.6-apache
 COPY docker_config/php.ini /usr/local/etc/php/
-#COPY ~/www/Elgg/ /var/www/html/ 
 
 	# Elgg requirements
 RUN apt-get update && apt-get install -y \
         libfreetype6-dev \
         libjpeg62-turbo-dev \
         libmcrypt-dev \
-        libpng12-dev 
+        libpng12-dev \
+        netcat
 
 RUN docker-php-ext-install pdo pdo_mysql mysql
 RUN docker-php-ext-install mbstring gd
 
-WORKDIR /var/www/html
+WORKDIR /var/www/html/
 
 
 # Email server
@@ -33,6 +33,7 @@ ENV MYSQL_PASS=${MYSQL_PASS:-"123123"}
 
 # required for installation
 ENV ELGG_DB_HOST=${ELGG_DB_HOST:-"mysql"}
+ENV MYSQL_PORT=${MYSQL_PORT:-"3306"}
 ENV ELGG_DB_USER=$MYSQL_USER
 ENV ELGG_DB_PASS=$MYSQL_PASS
 ENV ELGG_DB_NAME=${ELGG_DB_NAME:-"elgg"}
@@ -54,10 +55,10 @@ ENV ELGG_PASSWORD=${ELGG_PASSWORD:-"123123"}
 ENV ELGG_DB_PREFIX=${ELGG_DB_PREFIX:-"elgg_"}
 ENV ELGG_PATH=${ELGG_PATH:-"/var/www/html/"}
 # 2 is ACCESS_PUBLIC
-ENV ELGG_SITE_ACCESS=2
+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
-RUN /docker-entrypoint.sh
 
+ENTRYPOINT ["/docker-entrypoint.sh"]

+ 1 - 2
docker-compose.yml

@@ -6,9 +6,8 @@ web:
     - mysql
   volumes:
     - ~/www/Elgg/:/var/www/html/
-    - .:/var/www/html/elgg-docker/
 mysql:
-  image: mysql:5.7  
+  image: mysql:5.6  
   environment:
     MYSQL_DATABASE: elgg
     MYSQL_ROOT_PASSWORD: 123123

+ 19 - 0
docker-entrypoint.sh

@@ -1 +1,20 @@
+#!/bin/sh
+# Wait for database to get available
+
+MYSQL_LOOPS="100"
+MYSQL_HOST="$ELGG_DB_HOST"
+
+
+#wait for mysql
+i=0
+while ! netcat $MYSQL_HOST $MYSQL_PORT >/dev/null 2>&1 < /dev/null; do
+  i=`expr $i + 1`
+  if [ $i -ge $MYSQL_LOOPS ]; then
+    echo "$(date) - ${MYSQL_HOST}:${MYSQL_PORT} still not reachable, giving up."
+    exit 0
+  fi
+  echo "$(date) - waiting for ${MYSQL_HOST}:${MYSQL_PORT}... 1/$MYSQL_LOOPS."
+  sleep 1
+done
+
 php	/docker-install.php

+ 11 - 3
docker-install.php

@@ -2,12 +2,18 @@
 /**
  * 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(
@@ -30,8 +36,10 @@ $params = array(
 	'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, false);
-
-exit(0);
+$installer->batchInstall($params, true);