diff --git a/bash/buildImages.sh b/bash/buildImages.sh new file mode 100644 index 0000000..7f922b6 --- /dev/null +++ b/bash/buildImages.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +function buildImages { + NAME=$1 + VERSION=$2 + USERID=${3:-1000} + PHP=${4-:"all"} + + imageExists "${NAME}:${VERSION}-php56xdebug" + if [[ $? == 0 ]] && [[ "$PHP" == "php56xdebug" || "$PHP" == "all" ]]; then + docker build -t "${NAME}:${VERSION}-php56xdebug" --build-arg "USERID=$USERID" docker/php56xdebug + fi + + imageExists "${NAME}:${VERSION}-php70xdebug" + if [[ $? == 0 ]] && [[ "$PHP" == "php70xdebug" || "$PHP" == "all" ]]; then + docker build -t "${NAME}:${VERSION}-php70xdebug" --build-arg "USERID=$USERID" docker/php70xdebug + fi + + imageExists "${NAME}:${VERSION}-php71xdebug" + if [[ $? == 0 ]] && [[ "$PHP" == "php71xdebug" || "$PHP" == "all" ]]; then + docker build -t "${NAME}:${VERSION}-php71xdebug" --build-arg "USERID=$USERID" docker/php71xdebug + fi + + imageExists "${NAME}:${VERSION}-nginx" + if [[ $? == 0 ]]; then + docker build -t "${NAME}:${VERSION}-nginx" docker/nginx + fi +} diff --git a/bash/checkImageExists.sh b/bash/checkImageExists.sh new file mode 100644 index 0000000..bab2d85 --- /dev/null +++ b/bash/checkImageExists.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +function imageExists { + IMAGE_NAME=$1 + if docker history -q "$IMAGE_NAME" > /dev/null 2>&1; then + echo - "$IMAGE_NAME already exist" + return 1; + fi + + return 0; +} diff --git a/bash/defineVariables.sh b/bash/defineVariables.sh new file mode 100644 index 0000000..942f016 --- /dev/null +++ b/bash/defineVariables.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +function defineVariables +{ + export APP_NAME=$(echo $(cat composer.json | grep name | head -1 | awk -F: '{ print $2 }' | sed 's/[",\r]//g' | tr -dc '[:alnum:]\n\r' | tr '[:upper:]' '[:lower:]')) + export APP_VERSION=$(echo $(cat composer.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",\r]//g')) + export PROJECT_NAME="$APP_NAME" + export PROJECT_WEB_DIR=${PROJECT_WEB_DIR:="web"} + export PROJECT_INDEX_FILE=${PROJECT_INDEX_FILE:="index.php"} + export PROJECT_DEV_INDEX_FILE=${PROJECT_DEV_INDEX_FILE:="index_dev.php"} + + USERID=$(id -u); + echo "User ID: $USERID"; + echo -e "\nIMAGE VERSION: $APP_NAME:$APP_VERSION\n"; + declare -i BUILD_STATUS=0; +} diff --git a/bash/runBuild.sh b/bash/runBuild.sh new file mode 100644 index 0000000..4a38727 --- /dev/null +++ b/bash/runBuild.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +function runBuild { + export IMAGE_VERSION=$1 + export PROJECT_XDEBUG_ENABLED=${2:-false} + BUILD_OUTPUT=$(docker-compose up php) + docker-compose kill > /dev/null 2>&1 + docker-compose rm -f -v > /dev/null 2>&1 + + echo -e "$BUILD_OUTPUT"; + if echo "$BUILD_OUTPUT" | grep -q "exited with code 0"; then + BUILD_STATUS=0; + else + BUILD_STATUS=1; + fi +} diff --git a/bash/runInBackground.sh b/bash/runInBackground.sh new file mode 100644 index 0000000..4cbf86d --- /dev/null +++ b/bash/runInBackground.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +function runInBackground { + export IMAGE_VERSION=$1 + export PROJECT_XDEBUG_ENABLED=${2:-false} + + docker-compose -f docker-compose.yml -f docker-compose.local.yml kill > /dev/null 2>&1 + docker-compose -f docker-compose.yml -f docker-compose.local.yml rm -f -v > /dev/null 2>&1 + docker-compose -f docker-compose.yml -f docker-compose.local.yml up -d nginx php mysql + docker-compose -f docker-compose.yml -f docker-compose.local.yml exec php bash + docker-compose -f docker-compose.yml -f docker-compose.local.yml kill > /dev/null 2>&1 + docker-compose -f docker-compose.yml -f docker-compose.local.yml rm -f -v > /dev/null 2>&1 +} diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 13053cd..bafcbb8 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -13,7 +13,7 @@ mysql: - ./data:/var/lib/mysql nginx: - image: "${PROJECT_NAME}:${APP_VERSION}-nginx" + image: "${APP_NAME}:${APP_VERSION}-nginx" ports: - "8000:80" links: diff --git a/docker.sh b/docker.sh index c1d5052..6880747 100755 --- a/docker.sh +++ b/docker.sh @@ -4,85 +4,25 @@ PROJECT_TASK_NAME=$1; PROJECT_PHP_VERSION=${2:-71}; PROJECT_WITH_COVERAGE=${3:-false}; -export APP_NAME=$(echo $(cat composer.json | grep name | head -1 | awk -F: '{ print $2 }' | sed 's/[",\r]//g' | tr -dc '[:alnum:]\n\r' | tr '[:upper:]' '[:lower:]')) -export APP_VERSION=$(echo $(cat composer.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",\r]//g')) -export PROJECT_NAME="$APP_NAME" -export PROJECT_WEB_DIR=${PROJECT_WEB_DIR:="web"} -export PROJECT_INDEX_FILE=${PROJECT_INDEX_FILE:="index.php"} -export PROJECT_DEV_INDEX_FILE=${PROJECT_DEV_INDEX_FILE:="index_dev.php"} +__DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "${__DIR}" -USERID=$(id -u); -echo "User ID: $USERID"; -echo -e "\nIMAGE VERSION: $APP_NAME:$APP_VERSION\n"; -declare -i BUILD_STATUS=0; +FILES=( + 'buildImages.sh' + 'checkImageExists.sh' + 'defineVariables.sh' + 'runBuild.sh' + 'runInBackground.sh' +) -echo -e "All defined variables:\n" -( set -o posix ; set ) | grep 'PROJECT|APP' - -function imageExists { - IMAGE_NAME=$1 - if docker history -q "$IMAGE_NAME" > /dev/null 2>&1; then - echo - "$IMAGE_NAME already exist" - return 1; - fi - - return 0; -} - -function buildImages { - NAME=$1 - VERSION=$2 - USERID=${3:-1000} - PHP=${4-:"all"} - - imageExists "${NAME}:${VERSION}-php56xdebug" - if [[ $? == 0 ]] && [[ "$PHP" == "php56xdebug" || "$PHP" == "all" ]]; then - docker build -t "${NAME}:${VERSION}-php56xdebug" --build-arg "USERID=$USERID" docker/php56xdebug - fi - - imageExists "${NAME}:${VERSION}-php70xdebug" - if [[ $? == 0 ]] && [[ "$PHP" == "php70xdebug" || "$PHP" == "all" ]]; then - docker build -t "${NAME}:${VERSION}-php70xdebug" --build-arg "USERID=$USERID" docker/php70xdebug - fi +for FILE in "${FILES[@]}" ; do + source "bash/${FILE}" +done - imageExists "${NAME}:${VERSION}-php71xdebug" - if [[ $? == 0 ]] && [[ "$PHP" == "php71xdebug" || "$PHP" == "all" ]]; then - docker build -t "${NAME}:${VERSION}-php71xdebug" --build-arg "USERID=$USERID" docker/php71xdebug - fi +defineVariables - imageExists "${NAME}:${VERSION}-nginx" - if [[ $? == 0 ]]; then - docker build -t "${NAME}:${VERSION}-nginx" docker/nginx - fi -} - -function runBuild { - export IMAGE_VERSION=$1 - export PROJECT_XDEBUG_ENABLED=${2:-false} - BUILD_OUTPUT=$(docker-compose up php) - docker-compose kill > /dev/null 2>&1 - docker-compose rm -f -v > /dev/null 2>&1 - - echo -e "$BUILD_OUTPUT"; - if echo "$BUILD_OUTPUT" | grep -q "exited with code 0"; then - BUILD_STATUS=0; - else - BUILD_STATUS=1; - fi - -} - -function runInBackground { - export IMAGE_VERSION=$1 - export PROJECT_XDEBUG_ENABLED=${2:-false} - - docker-compose -f docker-compose.yml -f docker-compose.local.yml kill > /dev/null 2>&1 - docker-compose -f docker-compose.yml -f docker-compose.local.yml rm -f -v > /dev/null 2>&1 - docker-compose -f docker-compose.yml -f docker-compose.local.yml up -d nginx php mysql - docker-compose -f docker-compose.yml -f docker-compose.local.yml exec php bash - docker-compose -f docker-compose.yml -f docker-compose.local.yml kill > /dev/null 2>&1 - docker-compose -f docker-compose.yml -f docker-compose.local.yml rm -f -v > /dev/null 2>&1 -} +echo -e "All defined variables:\n" +( set -o posix ; set ) | grep 'PROJECT|APP' if [[ $PROJECT_TASK_NAME == '' ]]; then echo -e "Available tasks:"; diff --git a/docker/php56xdebug/Dockerfile b/docker/php56xdebug/Dockerfile index fa20229..665f3bb 100644 --- a/docker/php56xdebug/Dockerfile +++ b/docker/php56xdebug/Dockerfile @@ -24,6 +24,8 @@ RUN apt-get -qq update --fix-missing && \ libkrb5-dev \ cloc \ git-core \ + zip \ + unzip \ && rm -rf /var/lib/apt/lists/* COPY docker-php-pecl-install /usr/local/bin/ diff --git a/docker/php70xdebug/Dockerfile b/docker/php70xdebug/Dockerfile index 001c74d..f7b534d 100644 --- a/docker/php70xdebug/Dockerfile +++ b/docker/php70xdebug/Dockerfile @@ -24,6 +24,8 @@ RUN apt-get -qq update --fix-missing && \ libkrb5-dev \ cloc \ git-core \ + zip \ + unzip \ && rm -rf /var/lib/apt/lists/* COPY docker-php-pecl-install /usr/local/bin/ diff --git a/docker/php71xdebug/Dockerfile b/docker/php71xdebug/Dockerfile index 63edf42..eab1c00 100644 --- a/docker/php71xdebug/Dockerfile +++ b/docker/php71xdebug/Dockerfile @@ -24,6 +24,8 @@ RUN apt-get -qq update --fix-missing && \ libkrb5-dev \ cloc \ git-core \ + zip \ + unzip \ && rm -rf /var/lib/apt/lists/* COPY docker-php-pecl-install /usr/local/bin/