diff --git a/docker/Dockerfile.streamline-emr.arm64 b/docker/Dockerfile.streamline-emr.arm64 index 53c93670..cdc299db 100644 --- a/docker/Dockerfile.streamline-emr.arm64 +++ b/docker/Dockerfile.streamline-emr.arm64 @@ -1 +1,2 @@ -FROM streamlinehealth/streamline:signalytic \ No newline at end of file +FROM streamlinehealth/streamline:signalytic +COPY ./start_up.sh /var/www/html/start_up.sh \ No newline at end of file diff --git a/docker/start_up.sh b/docker/start_up.sh new file mode 100755 index 00000000..eca61403 --- /dev/null +++ b/docker/start_up.sh @@ -0,0 +1,84 @@ +#! /bin/sh + +# Required script variables +APP_NAME=${APP_NAME:-'streamline'} +export MYSQL_DATABASE=${DB_DATABASE:-'streamline'} +export MYSQL_USER=${DB_USERNAME:-'root'} +export MYSQL_PASSWORD=${DB_PASSWORD:-'streamline'} +export MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD:-'streamline'} + +# execute run.sh script for MySQL initialisation +chmod +x .docker/mysql/mysql-init.sh + +# run the MariaDB initialization script +echo "[info] running mariadb init script" +./.docker/mysql/mysql-init.sh + +if [ $? -eq 0 ]; then + + echo "[info] waiting for DB to start..." + for i in $(seq 1 30); do + mariadb-admin ping -u $MYSQL_USER -p$MYSQL_PASSWORD &>/dev/null + if [ $? -eq 0 ]; then + echo "[info] DB ready" + break + fi + sleep 1 + done + mariadb-admin ping -u $MYSQL_USER -p$MYSQL_PASSWORD + if [ $? -ne 0 ]; then + echo "[info] timed out waiting for DB" + exit 1 + fi + + echo "[info] MySQL server started. checking for '$MYSQL_DATABASE' database. " + + mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "use streamline;" + + # Guard condition to re-check existence of database schema + # If it doesnt exist, create it and import streamline_initial.sql file + if [ $? -eq 1 ]; then + + mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE $MYSQL_DATABASE;" + + if [ $? -eq 0 ]; then + echo "[info] Database: $MYSQL_DATABASE created." + + mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < ./.docker/mysql/scripts/streamline_initial.sql + if [ $? -eq 0 ]; then + echo "[info] populated database." + else + echo "[error] database not populated." + fi + + else + echo "[error] database not created." + fi + + else + echo "[info] Database: $MYSQL_DATABASE exists. " + fi + + echo "[info] starting $APP_NAME ..." + + echo "[info] artisan migrate" + php /var/www/html/artisan migrate + echo "[info] migrate result: $?" + + echo "[info] seed: PermissionTableSeeder" + php /var/www/html/artisan db:seed --class=PermissionTableSeeder + echo "[info] seed result: $?" + + echo "[info] seed: PermissionsCategoryTableSeeder" + php /var/www/html/artisan db:seed --class=PermissionsCategoryTableSeeder + echo "[info] seed result: $?" + + echo "serving app..." + php /var/www/html/artisan serve --host=0.0.0.0 --port=80 + +else + echo "[error] MariaDB server couldnt be started." + + # terminate script if database isnt running + exit 1; +fi