Skip to content

Commit

Permalink
Make project stateless
Browse files Browse the repository at this point in the history
  • Loading branch information
shyim committed Aug 13, 2019
1 parent e135316 commit f664b4b
Show file tree
Hide file tree
Showing 9 changed files with 94 additions and 86 deletions.
2 changes: 1 addition & 1 deletion .env.dist
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copy me to .env to modify configuration
# Copy me to $HOME/.swdc_env to modify configuration

# Persistent Database?
PERSISTENT_DATABASE=true
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This setup works for Shopware 5, Shopware 5 Composer Project and Platform

* Clone the repository somewhere
* Optional: Do a symlink from swdc to `/usr/local/bin/swdc`
* Configure your needs in ".env" file
* Copy .env.dist to $HOME/.swdc_env or just run swdc
* `swdc up`: Starts the docker-compose with the containers

## Creating projects
Expand All @@ -15,10 +15,11 @@ This setup works for Shopware 5, Shopware 5 Composer Project and Platform
* Run `swdc build [Folder Name]`
* After the installation succeed, can you open the shop with the command `swdc open [Folder Name]`


### Custom code directory

* You may change the code directory which the shopware installations lie in by
modifying the `CODE_DIRECTORY` variable in `.env`
modifying the `CODE_DIRECTORY` variable in `$HOME/.swdc_env`

## Which commands exist?

Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ services:
image: shyim/shopware-nginx:php72
env_file:
- docker.env
- .env
- ~/.swdc_env
ports:
- 80:80
- 443:443
Expand Down
2 changes: 1 addition & 1 deletion modules/base/debug-logs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ echo "" >> debug.txt
echo "=== .env" >> debug.txt
echo "" >> debug.txt

cat .env >> debug.txt
cat "${HOME}/.swdc_env" >> debug.txt

echo "" >> debug.txt
echo "" >> debug.txt
Expand Down
10 changes: 6 additions & 4 deletions modules/base/up.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
#!/usr/bin/env bash

source ".env"
source "${HOME}/.swdc_env"
source "${DIR}/modules/defaults/base-up.sh"

CODE_FOLDER_CONTENT="$(ls -A ${CODE_DIRECTORY})"

MYSQL_VERSION=$(echo ${MYSQL_VERSION} | sed 's/\.//g')
PHP_VERSION=$(echo ${PHP_VERSION} | sed 's/\.//g')

echo "version: '3'" > "${DIR}/docker-compose.override.yaml"
echo "services:" >> "${DIR}/docker-compose.override.yaml"
export DOCKER_OVERRIDE_FILE="/tmp/swdc-docker-compose-override.yml";

echo "version: '3'" > ${DOCKER_OVERRIDE_FILE}
echo "services:" >> ${DOCKER_OVERRIDE_FILE}

create_nginx
create_mysql
Expand Down Expand Up @@ -43,4 +45,4 @@ if [[ ${CACHE_VOLUMES} == "true" ]]; then
create_caching
fi

docker-compose up -d --remove-orphans
docker-compose -f ${DIR}/docker-compose.yml -f ${DOCKER_OVERRIDE_FILE} up -d --remove-orphans
140 changes: 70 additions & 70 deletions modules/defaults/base-up.sh
Original file line number Diff line number Diff line change
@@ -1,164 +1,164 @@
#!/usr/bin/env bash

function create_nginx (){
echo " nginx:" >> "${DIR}/docker-compose.override.yaml"
echo " nginx:" >> ${DOCKER_OVERRIDE_FILE}
if [[ -z $XDEBUG_VERSION ]]; then
echo " image: shyim/shopware-nginx:php${PHP_VERSION}" >> "${DIR}/docker-compose.override.yaml"
echo " image: shyim/shopware-nginx:php${PHP_VERSION}" >> ${DOCKER_OVERRIDE_FILE}
else
echo " image: shyim/shopware-nginx:php${XDEBUG_VERSION}" >> "${DIR}/docker-compose.override.yaml"
echo " image: shyim/shopware-nginx:php${XDEBUG_VERSION}" >> ${DOCKER_OVERRIDE_FILE}
fi
if [[ ${CODE_FOLDER_CONTENT} ]]; then
echo " extra_hosts:" >> "${DIR}/docker-compose.override.yaml"
echo " extra_hosts:" >> ${DOCKER_OVERRIDE_FILE}
for d in ${CODE_DIRECTORY}/* ; do
if [[ -d "$d" ]]; then
NAME=$(basename $d)
if [[ -f "$d/public/index.php" ]]; then
echo " ${NAME}.platform.localhost: 127.0.0.1" >> "${DIR}/docker-compose.override.yaml"
echo " ${NAME}.platform.localhost: 127.0.0.1" >> ${DOCKER_OVERRIDE_FILE}
else
echo " ${NAME}.dev.localhost: 127.0.0.1" >> "${DIR}/docker-compose.override.yaml"
echo " ${NAME}.dev.localhost: 127.0.0.1" >> ${DOCKER_OVERRIDE_FILE}
fi
fi
done
echo " volumes:" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}:/var/www/html:cached" >> "${DIR}/docker-compose.override.yaml"
echo " volumes:" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${CODE_DIRECTORY}:/var/www/html:cached" >> ${DOCKER_OVERRIDE_FILE}
for d in ${CODE_DIRECTORY}/* ; do
if [[ -d "$d" ]]; then
NAME=$(basename $d)
echo " - ${CODE_DIRECTORY}/${NAME}/media:/var/www/html/${NAME}/media:cached" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/files:/var/www/html/${NAME}/files:cached" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/media:/var/www/html/${NAME}/media:cached" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${CODE_DIRECTORY}/${NAME}/files:/var/www/html/${NAME}/files:cached" >> ${DOCKER_OVERRIDE_FILE}
if [[ ${CACHE_VOLUMES} == "true" ]]; then
echo " - ${NAME}_var_cache:/var/www/html/${NAME}/var/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${NAME}_web_cache:/var/www/html/${NAME}/web/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${NAME}_var_cache:/var/www/html/${NAME}/var/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${NAME}_web_cache:/var/www/html/${NAME}/web/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
else
echo " - ${CODE_DIRECTORY}/${NAME}/var/cache:/var/www/html/${NAME}/var/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/web/cache:/var/www/html/${NAME}/web/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/var/cache:/var/www/html/${NAME}/var/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${CODE_DIRECTORY}/${NAME}/web/cache:/var/www/html/${NAME}/web/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
fi
fi
done
fi
}

function create_mysql() {
echo " mysql:" >> "${DIR}/docker-compose.override.yaml"
echo " image: shyim/shopware-mysql:${MYSQL_VERSION}" >> "${DIR}/docker-compose.override.yaml"
echo " mysql:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: shyim/shopware-mysql:${MYSQL_VERSION}" >> ${DOCKER_OVERRIDE_FILE}
if [[ ${EXPOSE_MYSQL_LOCAL} == "true" ]]; then
echo " ports:" >> "${DIR}/docker-compose.override.yaml"
echo " - 3306:3306" >> "${DIR}/docker-compose.override.yaml"
echo " ports:" >> ${DOCKER_OVERRIDE_FILE}
echo " - 3306:3306" >> ${DOCKER_OVERRIDE_FILE}
fi
if [[ ${PERSISTENT_DATABASE} == "false" ]]; then
echo " tmpfs:" >> "${DIR}/docker-compose.override.yaml"
echo " - /var/lib/mysql" >> "${DIR}/docker-compose.override.yaml"
echo " tmpfs:" >> ${DOCKER_OVERRIDE_FILE}
echo " - /var/lib/mysql" >> ${DOCKER_OVERRIDE_FILE}
else
echo " volumes:" >> "${DIR}/docker-compose.override.yaml"
echo " - ./mysql-data:/var/lib/mysql:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " volumes:" >> ${DOCKER_OVERRIDE_FILE}
echo " - ./mysql-data:/var/lib/mysql:delegated" >> ${DOCKER_OVERRIDE_FILE}
fi
}

function create_ci () {
echo " cli:" >> "${DIR}/docker-compose.override.yaml"
echo " cli:" >> ${DOCKER_OVERRIDE_FILE}
if [[ ${CODE_FOLDER_CONTENT} ]]; then
echo " links:" >> "${DIR}/docker-compose.override.yaml"
echo " links:" >> ${DOCKER_OVERRIDE_FILE}
for d in ${CODE_DIRECTORY}/* ; do
if [[ -d "$d" ]]; then
NAME=$(basename $d)
if [[ -f "$d/public/index.php" ]]; then
echo " - nginx:${NAME}.platform.localhost" >> "${DIR}/docker-compose.override.yaml"
echo " - nginx:${NAME}.platform.localhost" >> ${DOCKER_OVERRIDE_FILE}
else
echo " - nginx:${NAME}.dev.localhost" >> "${DIR}/docker-compose.override.yaml"
echo " - nginx:${NAME}.dev.localhost" >> ${DOCKER_OVERRIDE_FILE}
fi
fi
done
echo " volumes:" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}:/var/www/html:cached" >> "${DIR}/docker-compose.override.yaml"
echo " volumes:" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${CODE_DIRECTORY}:/var/www/html:cached" >> ${DOCKER_OVERRIDE_FILE}
for d in ${CODE_DIRECTORY}/* ; do
if [[ -d "$d" ]]; then
NAME=$(basename $d)
echo " - ${CODE_DIRECTORY}/${NAME}/media:/var/www/html/${NAME}/media:cached" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/files:/var/www/html/${NAME}/files:cached" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/media:/var/www/html/${NAME}/media:cached" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${CODE_DIRECTORY}/${NAME}/files:/var/www/html/${NAME}/files:cached" >> ${DOCKER_OVERRIDE_FILE}
if [[ ${CACHE_VOLUMES} == "true" ]]; then
echo " - ${NAME}_var_cache:/var/www/html/${NAME}/var/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${NAME}_web_cache:/var/www/html/${NAME}/web/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${NAME}_var_cache:/var/www/html/${NAME}/var/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${NAME}_web_cache:/var/www/html/${NAME}/web/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
else
echo " - ${CODE_DIRECTORY}/${NAME}/var/cache:/var/www/html/${NAME}/var/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/web/cache:/var/www/html/${NAME}/web/cache:delegated" >> "${DIR}/docker-compose.override.yaml"
echo " - ${CODE_DIRECTORY}/${NAME}/var/cache:/var/www/html/${NAME}/var/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
echo " - ${CODE_DIRECTORY}/${NAME}/web/cache:/var/www/html/${NAME}/web/cache:delegated" >> ${DOCKER_OVERRIDE_FILE}
fi
fi
done
fi
}

function create_es () {
echo " elastic:" >> "${DIR}/docker-compose.override.yaml"
echo " image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTICSEARCH_VERSION}" >> "${DIR}/docker-compose.override.yaml"
echo " elastic:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTICSEARCH_VERSION}" >> ${DOCKER_OVERRIDE_FILE}

echo " cerebro:" >> "${DIR}/docker-compose.override.yaml"
echo " image: lmenezes/cerebro" >> "${DIR}/docker-compose.override.yaml"
echo " cerebro:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: lmenezes/cerebro" >> ${DOCKER_OVERRIDE_FILE}
}

function create_redis () {
echo " redis:" >> "${DIR}/docker-compose.override.yaml"
echo " image: redis:5-alpine" >> "${DIR}/docker-compose.override.yaml"
echo " redis:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: redis:5-alpine" >> ${DOCKER_OVERRIDE_FILE}
}

function create_minio () {
echo " minio:" >> "${DIR}/docker-compose.override.yaml"
echo " image: minio/minio" >> "${DIR}/docker-compose.override.yaml"
echo " env_file: docker.env" >> "${DIR}/docker-compose.override.yaml"
echo " command: server /data" >> "${DIR}/docker-compose.override.yaml"
echo " ports:" >> "${DIR}/docker-compose.override.yaml"
echo " - 9000:9000" >> "${DIR}/docker-compose.override.yaml"
echo " minio:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: minio/minio" >> ${DOCKER_OVERRIDE_FILE}
echo " env_file: docker.env" >> ${DOCKER_OVERRIDE_FILE}
echo " command: server /data" >> ${DOCKER_OVERRIDE_FILE}
echo " ports:" >> ${DOCKER_OVERRIDE_FILE}
echo " - 9000:9000" >> ${DOCKER_OVERRIDE_FILE}
}

function create_database_tool () {
if [[ ${DATABASE_TOOL} == "phpmyadmin" ]]; then
echo " phpmyadmin:" >> "${DIR}/docker-compose.override.yaml"
echo " image: phpmyadmin/phpmyadmin" >> "${DIR}/docker-compose.override.yaml"
echo " env_file: docker.env" >> "${DIR}/docker-compose.override.yaml"
echo " phpmyadmin:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: phpmyadmin/phpmyadmin" >> ${DOCKER_OVERRIDE_FILE}
echo " env_file: docker.env" >> ${DOCKER_OVERRIDE_FILE}
else
echo " adminer:" >> "${DIR}/docker-compose.override.yaml"
echo " image: adminer" >> "${DIR}/docker-compose.override.yaml"
echo " env_file: docker.env" >> "${DIR}/docker-compose.override.yaml"
echo " adminer:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: adminer" >> ${DOCKER_OVERRIDE_FILE}
echo " env_file: docker.env" >> ${DOCKER_OVERRIDE_FILE}
fi
}

function create_selenium () {
echo " selenium:" >> "${DIR}/docker-compose.override.yaml"
echo " image: selenium/standalone-chrome:3.8.1" >> "${DIR}/docker-compose.override.yaml"
echo " shm_size: 2g" >> "${DIR}/docker-compose.override.yaml"
echo " environment:" >> "${DIR}/docker-compose.override.yaml"
echo " DBUS_SESSION_BUS_ADDRESS: /dev/null" >> "${DIR}/docker-compose.override.yaml"
echo " selenium:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: selenium/standalone-chrome:3.8.1" >> ${DOCKER_OVERRIDE_FILE}
echo " shm_size: 2g" >> ${DOCKER_OVERRIDE_FILE}
echo " environment:" >> ${DOCKER_OVERRIDE_FILE}
echo " DBUS_SESSION_BUS_ADDRESS: /dev/null" >> ${DOCKER_OVERRIDE_FILE}

if [[ ${CODE_FOLDER_CONTENT} ]]; then
echo " links:" >> "${DIR}/docker-compose.override.yaml"
echo " links:" >> ${DOCKER_OVERRIDE_FILE}

for d in ${CODE_DIRECTORY}/* ; do
if [[ -f "$d/public/index.php" ]]; then
echo " - nginx:${NAME}.platform.localhost" >> "${DIR}/docker-compose.override.yaml"
echo " - nginx:${NAME}.platform.localhost" >> ${DOCKER_OVERRIDE_FILE}
else
echo " - nginx:${NAME}.dev.localhost" >> "${DIR}/docker-compose.override.yaml"
echo " - nginx:${NAME}.dev.localhost" >> ${DOCKER_OVERRIDE_FILE}
fi
done
fi
}

function create_blackfire () {
echo " blackfire:" >> "${DIR}/docker-compose.override.yaml"
echo " image: blackfire/blackfire" >> "${DIR}/docker-compose.override.yaml"
echo " environment:" >> "${DIR}/docker-compose.override.yaml"
echo " BLACKFIRE_SERVER_ID: ${BLACKFIRE_SERVER_ID}" >> "${DIR}/docker-compose.override.yaml"
echo " BLACKFIRE_SERVER_TOKEN: ${BLACKFIRE_SERVER_TOKEN}" >> "${DIR}/docker-compose.override.yaml"
echo " blackfire:" >> ${DOCKER_OVERRIDE_FILE}
echo " image: blackfire/blackfire" >> ${DOCKER_OVERRIDE_FILE}
echo " environment:" >> ${DOCKER_OVERRIDE_FILE}
echo " BLACKFIRE_SERVER_ID: ${BLACKFIRE_SERVER_ID}" >> ${DOCKER_OVERRIDE_FILE}
echo " BLACKFIRE_SERVER_TOKEN: ${BLACKFIRE_SERVER_TOKEN}" >> ${DOCKER_OVERRIDE_FILE}
}

function create_caching () {
if [[ ${CODE_FOLDER_CONTENT} ]]; then
echo "volumes:" >> "${DIR}/docker-compose.override.yaml"
echo "volumes:" >> ${DOCKER_OVERRIDE_FILE}
for d in ${CODE_DIRECTORY}/* ; do
if [[ -d "$d" ]]; then
NAME=$(basename $d)
echo " ${NAME}_var_cache:" >> "${DIR}/docker-compose.override.yaml"
echo " driver: local" >> "${DIR}/docker-compose.override.yaml"
echo " ${NAME}_web_cache:" >> "${DIR}/docker-compose.override.yaml"
echo " driver: local" >> "${DIR}/docker-compose.override.yaml"
echo " ${NAME}_var_cache:" >> ${DOCKER_OVERRIDE_FILE}
echo " driver: local" >> ${DOCKER_OVERRIDE_FILE}
echo " ${NAME}_web_cache:" >> ${DOCKER_OVERRIDE_FILE}
echo " driver: local" >> ${DOCKER_OVERRIDE_FILE}
fi
done
fi
Expand Down
2 changes: 1 addition & 1 deletion modules/local/configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ if [[ -z $EDITOR ]]; then
exit 0
fi

$EDITOR "${DIR}/.env"
$EDITOR "${HOME}/.swdc_env"

2 changes: 1 addition & 1 deletion modules/local/local-up.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash

source "${DIR}/.env"
source "${HOME}/.swdc_env"
source "${DIR}/modules/defaults/base-up.sh"

CODE_FOLDER_CONTENT="$(ls -A ${CODE_DIRECTORY})"
Expand Down
15 changes: 10 additions & 5 deletions swdc
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,18 @@ fi
DIR="$(dirname ${FILE})"
export DIR="${DIR}"

if [[ ! -f "${DIR}/.env" ]]; then
cp "${DIR}/.env.dist" "${DIR}/.env"
echo "Copied .env.dist to .env. Please configure .env file or run again to use default settings"
exit 1
if [[ ! -f "${HOME}/.swdc_env" ]]; then
if [[ -f "${DIR}/.env" ]]; then
mv "${DIR}/.env" "${HOME}/.swdc_env"
else
cp "${DIR}/.env.dist" "${HOME}/.swdc_env"
echo "Copied .env.dist to $HOME/.swdc_env. Please configure .env file or run again to use default settings"
exit 1
fi
fi

source "${DIR}/.env"

source "${HOME}/.swdc_env"
source "${DIR}/functions.sh"

# Need to be in docker folder for docker-compose
Expand Down

0 comments on commit f664b4b

Please sign in to comment.