From 81d8e67c36b08f2f6a45a4712aaab51025fac5d9 Mon Sep 17 00:00:00 2001 From: Exadra37 Date: Wed, 4 Oct 2017 20:45:30 +0000 Subject: [PATCH 1/7] --wip-- [skip ci] --- bin/php7-docker-stack-setup.sh | 21 +++++++++++++++++++++ composer.json | 5 +++++ 2 files changed, 26 insertions(+) create mode 100755 bin/php7-docker-stack-setup.sh diff --git a/bin/php7-docker-stack-setup.sh b/bin/php7-docker-stack-setup.sh new file mode 100755 index 0000000..1a4f734 --- /dev/null +++ b/bin/php7-docker-stack-setup.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +function createDirIfNotExists() +{ + local dir_path="${1}" + + [ -d "${dir_path}" ] || mkdir -p "${dir_path}" +} + +function copyDockerDirToProject() +{ + [ -d "./docker" ] || cp -rn ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker . +} + +# creating the default dirs to persist the containers data. otherwise they will +# be created as root user. +createDirIfNotExists ~/.dockerize/storage/database/mysql +createDirIfNotExists ~/.dockerize/storage/elastic-search/public +createDirIfNotExists ~/.dockerize/storage/elastic-search/internal + +copyDockerDirToProject diff --git a/composer.json b/composer.json index 2711e64..39d1d07 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,11 @@ "bin": [ "bin/server" ], + "scripts": { + "post-root-package-install": [ + "./bin/php7-docker-stack-setup.sh" + ] + }, "minimum-stability": "dev", "prefer-stable": true } From 35c753cadfbc9a7d107a8c28ad3ba31232ac488c Mon Sep 17 00:00:00 2001 From: Exadra37 Date: Wed, 4 Oct 2017 20:46:29 +0000 Subject: [PATCH 2/7] --wip-- [skip ci] --- bin/php7-docker-stack-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/php7-docker-stack-setup.sh b/bin/php7-docker-stack-setup.sh index 1a4f734..7f43b5f 100755 --- a/bin/php7-docker-stack-setup.sh +++ b/bin/php7-docker-stack-setup.sh @@ -9,7 +9,7 @@ function createDirIfNotExists() function copyDockerDirToProject() { - [ -d "./docker" ] || cp -rn ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker . + [ -d "./docker" ] || cp -rnv ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker . } # creating the default dirs to persist the containers data. otherwise they will From 239a364a678226b961c716079f23ec2d0e4f5ca6 Mon Sep 17 00:00:00 2001 From: Exadra37 Date: Wed, 4 Oct 2017 21:15:52 +0000 Subject: [PATCH 3/7] --wip-- [skip ci] --- composer.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 39d1d07..58147fa 100644 --- a/composer.json +++ b/composer.json @@ -45,7 +45,13 @@ "bin/server" ], "scripts": { - "post-root-package-install": [ + "post-package-install": [ + "./bin/php7-docker-stack-setup.sh" + ], + "post-install-cmd": [ + "./bin/php7-docker-stack-setup.sh" + ], + "post-update-cmd": [ "./bin/php7-docker-stack-setup.sh" ] }, From 3ac4c7e02aebbaee0bacabefa118ff24528ae01e Mon Sep 17 00:00:00 2001 From: Exadra37 Date: Wed, 4 Oct 2017 21:56:48 +0000 Subject: [PATCH 4/7] --wip-- [skip ci] --- bin/php7-docker-stack-setup.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/php7-docker-stack-setup.sh b/bin/php7-docker-stack-setup.sh index 7f43b5f..a5a161a 100755 --- a/bin/php7-docker-stack-setup.sh +++ b/bin/php7-docker-stack-setup.sh @@ -9,9 +9,11 @@ function createDirIfNotExists() function copyDockerDirToProject() { - [ -d "./docker" ] || cp -rnv ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker . + printf "\n--->Copy Docker Stack to Project Root <---\n" + cp -rnv ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker . } +printf "\n--->Create Docker Stack Default Host Dirs\n<---" # creating the default dirs to persist the containers data. otherwise they will # be created as root user. createDirIfNotExists ~/.dockerize/storage/database/mysql From 0fa4406f525fedfd654abb6412fb788b5eb3ca88 Mon Sep 17 00:00:00 2001 From: Exadra37 Date: Thu, 5 Oct 2017 09:05:51 +0100 Subject: [PATCH 5/7] --wip-- [skip ci] --- bin/php7-docker-stack-setup.sh | 34 +++++++++++++++++++++++++--------- bin/server | 18 +++++++++++++++++- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/bin/php7-docker-stack-setup.sh b/bin/php7-docker-stack-setup.sh index a5a161a..56cdfc9 100755 --- a/bin/php7-docker-stack-setup.sh +++ b/bin/php7-docker-stack-setup.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + function createDirIfNotExists() { local dir_path="${1}" @@ -9,15 +11,29 @@ function createDirIfNotExists() function copyDockerDirToProject() { - printf "\n--->Copy Docker Stack to Project Root <---\n" - cp -rnv ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker . + printf "\n---> Copy Docker Stack Images to Project Root <---" + cp -rn ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker . } -printf "\n--->Create Docker Stack Default Host Dirs\n<---" -# creating the default dirs to persist the containers data. otherwise they will -# be created as root user. -createDirIfNotExists ~/.dockerize/storage/database/mysql -createDirIfNotExists ~/.dockerize/storage/elastic-search/public -createDirIfNotExists ~/.dockerize/storage/elastic-search/internal +function createDefaultHostDirs() +{ + printf "\n---> Create Docker Stack Default Host Dirs <---" -copyDockerDirToProject + # creating the default dirs to persist the containers data. otherwise they will + # be created as root user. + createDirIfNotExists ~/.dockerize/storage/database/mysql + createDirIfNotExists ~/.dockerize/storage/elastic-search/public + createDirIfNotExists ~/.dockerize/storage/elastic-search/internal +} + +function setEnvVars() +{ + printf "\n---> Setup Env Vars <---\n\n" +} + +function setupDockerStack() +{ + createDefaultHostDirs + copyDockerDirToProject + setEnvVars +} diff --git a/bin/server b/bin/server index e6c50c6..3752e04 100755 --- a/bin/server +++ b/bin/server @@ -1,4 +1,20 @@ -#!/bin/sh +#!/bin/bash + +set -e + +source ./vendor/exadra37-docker-compose/php7-docker-stack/bin/php7-docker-stack-setup.sh + +if [ "--setup-docker-stack" == "${1}" ] + then + setupDockerStack + exit 0 +fi + +# For first run we want to ensure that the ./docker folder exists in the project. +if [ ! -d ./docker ] + then + setupDockerStack +fi # We need to ensure that if Php7 Docker Stack is used in more than 1 project, in same machine, Docker compose is able to # create unique names for the Docker containers in each project. From 4846ae9a7e79ea8f5c3db5932373a8518725444c Mon Sep 17 00:00:00 2001 From: Exadra37 Date: Thu, 5 Oct 2017 23:16:11 +0100 Subject: [PATCH 6/7] --wip-- [skip ci] --- bin/parse-env-vars.sh | 75 +++++++++++++++++++++++++++++++++++++++++++ bin/server | 5 +++ 2 files changed, 80 insertions(+) create mode 100755 bin/parse-env-vars.sh diff --git a/bin/parse-env-vars.sh b/bin/parse-env-vars.sh new file mode 100755 index 0000000..70224a3 --- /dev/null +++ b/bin/parse-env-vars.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +set -e + +function pull_Docker_Image_From_Env_File() +{ + local env_var="${1}" + + if [ -f ".env" ] + then + # TODO: only grep lines that are not commented out. + local env_var_line=$(grep -i ${env_var}= .env) + + # PHP_IMAGE=exadra37/php7-fpm:latest -> exadra37/php7-fpm:latest + local docker_image=${env_var_line##*=} + + if [ -z "${docker_image}" ] + then + return 1 + fi + + printf "\n---> Pulling From Env File : ${docker_image}\n" + sudo docker pull "${docker_image}" + + return 0 + fi +} + +function pull_Docker_Image_From_Docker_Compose() +{ + local env_var="${1}" + local env_var_line=$(grep -i ${env_var}:- ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker-compose.yml) + + # image: ${PHP_IMAGE:-exadra37/php7-fpm:latest} -> exadra37/php7-fpm:latest + local docker_image=${env_var_line##*:-} + + # removes } from end of string + local docker_image=${docker_image::-1} + + if [ -z "${docker_image}" ] + then + return 1 + fi + + printf "\n---> Pulling From Docker Compose : ${docker_image}\n" + sudo docker pull "${docker_image}" + + return 0 +} + +function pull_Docker_Images() +{ + local DOCKER_IMAGES_ENV_VARS=( + CACHE_IMAGE + CRON_JOBS_IMAGE + DATABASE_IMAGE + HTTP_IMAGE + PHP_IMAGE + QUEUE_IMAGE + DEV_CLI_IMAGE + DATABASE_CLI_IMAGE + ) + + for env_var in "${DOCKER_IMAGES_ENV_VARS[@]}" + do + if ! pull_Docker_Image_From_Env_File "${env_var}" + then + pull_Docker_Image_From_Docker_Compose "${env_var}" + fi + done +} + +# printf "\nPull Docker Images\n" + +#pull_Docker_Images diff --git a/bin/server b/bin/server index 3752e04..d0b79d5 100755 --- a/bin/server +++ b/bin/server @@ -3,6 +3,7 @@ set -e source ./vendor/exadra37-docker-compose/php7-docker-stack/bin/php7-docker-stack-setup.sh +source ./vendor/exadra37-docker-compose/php7-docker-stack/bin/parse-env-vars.sh if [ "--setup-docker-stack" == "${1}" ] then @@ -16,6 +17,10 @@ if [ ! -d ./docker ] setupDockerStack fi +pull_Docker_Images + +exit 0 + # We need to ensure that if Php7 Docker Stack is used in more than 1 project, in same machine, Docker compose is able to # create unique names for the Docker containers in each project. PROJECT_NAME=${PWD##*/} From 098f92bb0d38331e8c2ddbd6799d0997ac5c31de Mon Sep 17 00:00:00 2001 From: Exadra37 Date: Fri, 6 Oct 2017 09:06:01 +0100 Subject: [PATCH 7/7] --wip-- [skip ci] --- bin/docker-pull-from-env-vars.sh | 114 +++++++++++++++++++++++++++++++ bin/parse-env-vars.sh | 75 -------------------- bin/server | 2 +- 3 files changed, 115 insertions(+), 76 deletions(-) create mode 100755 bin/docker-pull-from-env-vars.sh delete mode 100755 bin/parse-env-vars.sh diff --git a/bin/docker-pull-from-env-vars.sh b/bin/docker-pull-from-env-vars.sh new file mode 100755 index 0000000..e9c6b39 --- /dev/null +++ b/bin/docker-pull-from-env-vars.sh @@ -0,0 +1,114 @@ +#!/bin/bash + +set -e + +function parse_Env_Var_From_Env_File() +{ + local env_var="${1}" + + local env_file="${2:-.env}" + + # TODO: only grep lines that are not commented out. + local env_var_line="$(grep -i ${env_var}= ${env_file})" + + # PHP_IMAGE=exadra37/php7-fpm:latest -> exadra37/php7-fpm:latest + local docker_image="${env_var_line##*=}" + + echo "${docker_image}" +} + +function parse_Env_Var_From_Docker_Compose() +{ + local env_var="${1}" + + local docker_compose_file="${2:-./vendor/exadra37-docker-compose/php7-docker-stack/src/docker-compose.yml}" + + local env_var_line=$(grep -i ${env_var}:-"${docker_compose_file}") + + # image: ${PHP_IMAGE:-exadra37/php7-fpm:latest} -> exadra37/php7-fpm:latest + local docker_image="${env_var_line##*:-}" + + # removes } from end of string + local docker_image="${docker_image::-1}" + + echo "${docker_image}" +} + +function parse_Env_Var_From_Docker_Compose() +{ + local env_var="${1}" + local env_var_line=$(grep -i ${env_var}:- ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker-compose.yml) + + # image: ${PHP_IMAGE:-exadra37/php7-fpm:latest} -> exadra37/php7-fpm:latest + local docker_image="${env_var_line##*:-}" + + # removes } from end of string + local docker_image="${docker_image::-1}" + + echo "${docker_image}" +} + +function pull_Docker_Image_From_Env_File() +{ + local env_var="${1}" + + if [ -f ".env" ] + then + + if [ -z "${docker_image}" ] + then + return 1 + fi + + printf "\n---> Pulling From Env File : ${docker_image}\n" + sudo docker pull "${docker_image}" + + return 0 + fi +} + +function pull_Docker_Image_From_Docker_Compose() +{ + local env_var="${1}" + + local docker_image="$(parse_Env_Var_From_Docker_Compose "${env_var}")" + + if [ -z "${docker_image}" ] + then + return 1 + fi + + printf "\n---> Pulling From Docker Compose : ${docker_image}\n" + sudo docker pull "${docker_image}" + + return 0 +} + +function pull_Docker_Image() +{ + local env_var="${1}" + + if ! pull_Docker_Image_From_Env_File "${env_var}" + then + pull_Docker_Image_From_Docker_Compose "${env_var}" + fi +} + +function pull_Docker_Images() +{ + local DOCKER_IMAGES_ENV_VARS=( + CACHE_IMAGE + CRON_JOBS_IMAGE + DATABASE_IMAGE + HTTP_IMAGE + PHP_IMAGE + QUEUE_IMAGE + DEV_CLI_IMAGE + DATABASE_CLI_IMAGE + ) + + for env_var in "${DOCKER_IMAGES_ENV_VARS[@]}" + do + pull_Docker_Image "${env_var}" + done +} diff --git a/bin/parse-env-vars.sh b/bin/parse-env-vars.sh deleted file mode 100755 index 70224a3..0000000 --- a/bin/parse-env-vars.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -set -e - -function pull_Docker_Image_From_Env_File() -{ - local env_var="${1}" - - if [ -f ".env" ] - then - # TODO: only grep lines that are not commented out. - local env_var_line=$(grep -i ${env_var}= .env) - - # PHP_IMAGE=exadra37/php7-fpm:latest -> exadra37/php7-fpm:latest - local docker_image=${env_var_line##*=} - - if [ -z "${docker_image}" ] - then - return 1 - fi - - printf "\n---> Pulling From Env File : ${docker_image}\n" - sudo docker pull "${docker_image}" - - return 0 - fi -} - -function pull_Docker_Image_From_Docker_Compose() -{ - local env_var="${1}" - local env_var_line=$(grep -i ${env_var}:- ./vendor/exadra37-docker-compose/php7-docker-stack/src/docker-compose.yml) - - # image: ${PHP_IMAGE:-exadra37/php7-fpm:latest} -> exadra37/php7-fpm:latest - local docker_image=${env_var_line##*:-} - - # removes } from end of string - local docker_image=${docker_image::-1} - - if [ -z "${docker_image}" ] - then - return 1 - fi - - printf "\n---> Pulling From Docker Compose : ${docker_image}\n" - sudo docker pull "${docker_image}" - - return 0 -} - -function pull_Docker_Images() -{ - local DOCKER_IMAGES_ENV_VARS=( - CACHE_IMAGE - CRON_JOBS_IMAGE - DATABASE_IMAGE - HTTP_IMAGE - PHP_IMAGE - QUEUE_IMAGE - DEV_CLI_IMAGE - DATABASE_CLI_IMAGE - ) - - for env_var in "${DOCKER_IMAGES_ENV_VARS[@]}" - do - if ! pull_Docker_Image_From_Env_File "${env_var}" - then - pull_Docker_Image_From_Docker_Compose "${env_var}" - fi - done -} - -# printf "\nPull Docker Images\n" - -#pull_Docker_Images diff --git a/bin/server b/bin/server index d0b79d5..c255a6b 100755 --- a/bin/server +++ b/bin/server @@ -3,7 +3,7 @@ set -e source ./vendor/exadra37-docker-compose/php7-docker-stack/bin/php7-docker-stack-setup.sh -source ./vendor/exadra37-docker-compose/php7-docker-stack/bin/parse-env-vars.sh +source ./vendor/exadra37-docker-compose/php7-docker-stack/bin/docker-pull-from-env-vars.sh if [ "--setup-docker-stack" == "${1}" ] then