Jelajahi Sumber

Merge pull request #3 from keviocastro/2.x

2.x
keviocastro 9 tahun lalu
induk
melakukan
4073bdbc11
6 mengubah file dengan 66 tambahan dan 47 penghapusan
  1. 16 21
      Dockerfile
  2. 11 8
      README.md
  3. 19 0
      composer-install.sh
  4. 0 8
      elgg-docker.sublime-project
  5. 3 2
      elgg-install.php
  6. 17 8
      elgg-install.sh

+ 16 - 21
Dockerfile

@@ -1,4 +1,4 @@
-FROM php:5.6-apache
+FROM php:7.1-apache
 COPY . /elgg-docker/
 COPY docker_config/php.ini /usr/local/etc/php/
 
@@ -8,13 +8,16 @@ RUN apt-get update && apt-get install -y \
         libmcrypt-dev \
         libpng12-dev \
         netcat \
-        mysql-client
+        mysql-client \
+        wget \
+        unzip
 
 # Elgg requirements
 RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
 RUN docker-php-ext-install gd
-RUN docker-php-ext-install pdo pdo_mysql mysql
+RUN docker-php-ext-install pdo pdo_mysql
 RUN docker-php-ext-install mbstring
+RUN chmod +x /elgg-docker/composer-install.sh && /elgg-docker/composer-install.sh 
 
 WORKDIR /var/www/html/
 
@@ -27,32 +30,24 @@ RUN cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
 #Set time zone in PHP
 RUN sed -i "s#{{timezone}}#$TIMEZONE#g" /usr/local/etc/php/php.ini
 
-# set defaults or env vars for Elgg and MySQL
-# MySQL
-ENV MYSQL_USER=${MYSQL_USER:-"root"}
-ENV MYSQL_PASS=${MYSQL_PASS:-"root-pass"}
-ENV MYSQL_PORT=${MYSQL_PORT:-"3306"}
-
-# required for installation
+# Database
 ENV ELGG_DB_HOST=${ELGG_DB_HOST:-"mysql"}
 ENV ELGG_DB_USER=$MYSQL_USER
 ENV ELGG_DB_PASS=$MYSQL_PASS
 ENV ELGG_DB_NAME=${ELGG_DB_NAME:-"elgg"}
+ENV ELGG_DB_PORT=${MYSQL_PORT:-"3306"}
+ENV ELGG_DB_PREFIX=${ELGG_DB_PREFIX:-"elgg_"}
 
-ENV ELGG_SITE_NAME=${ELGG_SITE_NAME:-"Elgg Site"}
-ENV ELGG_DATA_ROOT=${ELGG_DATA_ROOT:-"/media/elgg/"}
-ENV ELGG_WWW_ROOT=${ELGG_WWW_ROOT:-"http://localhost:8000"}
-
-# admin user setup
+# Elgg admin account
 ENV ELGG_DISPLAY_NAME=${ELGG_DISPLAY_NAME:-"Admin"}
-ENV ELGG_EMAIL=${ELGG_EMAIL:-"admin@myelgg.org"}
+ENV ELGG_EMAIL=${ELGG_EMAIL:-"admin@myelgg.com"}
 ENV ELGG_USERNAME=${ELGG_USERNAME:-"admin"}
 ENV ELGG_PASSWORD=${ELGG_PASSWORD:-"admin-pass"}
 
-# optional for installation
-ENV ELGG_DB_PREFIX=${ELGG_DB_PREFIX:-"elgg_"}
-ENV ELGG_PATH=${ELGG_PATH:-"/var/www/html/"}
-# 2 is ACCESS_PUBLIC
+ENV ELGG_SITE_NAME=${ELGG_SITE_NAME:-"Elgg Site"}
+ENV ELGG_DATA_ROOT=${ELGG_DATA_ROOT:-"/media/elgg/"}
+ENV ELGG_WWW_ROOT=${ELGG_WWW_ROOT:-"http://localhost:8000"}
 ENV ELGG_SITE_ACCESS=${ELGG_SITE_ACCESS:-"2"}
+ENV ELGG_PATH=${ELGG_PATH:-"/var/www/html/"}
 
-RUN chmod +x /elgg-docker/elgg-install.sh
+RUN chmod +x /elgg-docker/elgg-install.sh

+ 11 - 8
README.md

@@ -1,6 +1,7 @@
 # Supported tags and respective `Dockerfile` links
-
-  -	[`2.0` (*Dockerfile*)](https://github.com/keviocastro/elgg-docker/blob/2.0/Dockerfile), [`lastest` (*Dockerfile*)](https://github.com/keviocastro/elgg-docker/blob/master/Dockerfile)
+  
+  - [`lastest` (*Dockerfile*)](https://github.com/keviocastro/elgg-docker/blob/master/Dockerfile)
+  - [`2.0`, `2.1`, `2.2`, `2.3` (*Dockerfile*)](https://github.com/keviocastro/elgg-docker/blob/2.x/Dockerfile)
   -	[`1.12` (*Dockerfile*)](https://github.com/keviocastro/elgg-docker/blob/1.12/Dockerfile)
 
 
@@ -15,6 +16,7 @@ For more information and related for Elgg, please visit www.elgg.org.
 # How to use this image
 
 Before you start you need to have installed:
+- git: https://git-scm.com/
 - composer: https://getcomposer.org/download/
 - docker: http://docs.docker.com/linux/step_one/ or https://docs.docker.com/installation/ubuntulinux/
 - docker-compose: https://docs.docker.com/compose/install/
@@ -22,17 +24,18 @@ Before you start you need to have installed:
 1.. Get the Elgg:
 
 ```console
-$ 
+& mkdir elgg && cd elgg 
 ```
 
 ```console
-& mkdir elgg && cd elgg
-$ composer.phar global require "fxp/composer-asset-plugin:~1.1.1"
-$ composer create-project elgg/starter-project:dev-master .
-$ composer.phar install
+$ composer create-project elgg/starter-project:dev-master 
 ```
 
-See http://learn.elgg.org/en/stable/intro/install.html#upload-elgg
+or 
+
+```console
+$ git clone git@github.com:Elgg/Elgg.git && git checkout 2.3
+```
 
 2.. Create file docker-compose.yml at your project directory, for running multi-container applications with docker-compose:
 

+ 19 - 0
composer-install.sh

@@ -0,0 +1,19 @@
+#!/bin/sh
+set -e
+
+EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig)
+php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');")
+
+if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
+then
+    >&2 echo 'ERROR: Composer invalid installer signature'
+    rm composer-setup.php
+    exit 1
+fi
+
+php composer-setup.php --install-dir=/usr/local/bin --filename=composer --quiet
+composer global require "fxp/composer-asset-plugin:~1.3"
+RESULT=$?
+rm composer-setup.php
+exit $RESULT

+ 0 - 8
elgg-docker.sublime-project

@@ -1,8 +0,0 @@
-{
-	"folders":
-	[
-		{
-			"path": "."
-		}
-	]
-}

+ 3 - 2
elgg-install.php

@@ -10,16 +10,17 @@ if (!$autoload_available) {
 
 $params = array(
 	// database parameters
+	'dbhost' => getenv('ELGG_DB_HOST'),
+	'dbprefix' => getenv('ELGG_DB_PREFIX'),
 	'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'),
+	'siteaccess' => getenv('ELGG_SITE_ACCESS'),
 	// admin account
 	'displayname' => getenv('ELGG_DISPLAY_NAME'),
 	'email' => getenv('ELGG_EMAIL'),

+ 17 - 8
elgg-install.sh

@@ -1,22 +1,17 @@
 #!/bin/sh
-
 set -e
 
 WAIT_MYSQL_START="30" # In seconds
-MYSQL_PORT="$MYSQL_PORT"
-MYSQL_USER="$MYSQL_USER"
-MYSQL_PASS="$MYSQL_PASS"
-ELGG_DB_HOST="$ELGG_DB_HOST"
 
 #wait for mysql
 i=0
-while ! netcat $ELGG_DB_HOST $MYSQL_PORT >/dev/null 2>&1 < /dev/null; do
+while ! netcat $ELGG_DB_HOST $ELGG_DB_PORT >/dev/null 2>&1 < /dev/null; do
   i=`expr $i + 1`
   if [ $i -ge $MYSQL_LOOPS ]; then
-    echo "$(date) - ${ELGG_DB_HOST}:${MYSQL_PORT} still not reachable, giving up."
+    echo "$(date) - ${ELGG_DB_HOST}:${ELGG_DB_PORT} still not reachable, giving up."
     exit 1
   fi
-  echo "$(date) - waiting for ${ELGG_DB_HOST}:${MYSQL_PORT}... $i/$WAIT_MYSQL_START."
+  echo "$(date) - waiting for ${ELGG_DB_HOST}:${ELGG_DB_PORT}... $i/$WAIT_MYSQL_START."
   sleep 1
 done
 echo "The MySQL server is ready."
@@ -27,4 +22,18 @@ if [ ! -d "${ELGG_PATH}elgg-config/" ]; then
 	mkdir "${ELGG_PATH}elgg-config/"
 	chown -R www-data:www-data "${ELGG_PATH}elgg-config/"
 fi
+
+# Dependencies install
+if [ ! -f "${ELGG_PATH}vendor/autoload.php" ]; then
+	echo 'File vendor/autoload.php does not exist.'
+	echo 'Running composer install'
+	composer install --prefer-source
+fi
+
+if [ ! -d "$ELGG_DATA_ROOT" ]; then
+  mkdir $ELGG_DATA_ROOT
+  chmod -R 770 "${ELGG_DATA_ROOT}" 
+  chown -R www-data:www-data "${ELGG_DATA_ROOT}"
+fi 
+
 php	/elgg-docker/elgg-install.php