Created
June 21, 2017 18:19
-
-
Save FredLackeyOfficial/7c164ba5a28a5c696a355f8826cdb567 to your computer and use it in GitHub Desktop.
Bash script to bring up Dreamfactory in Docker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
main(){ | |
local PROJECT_PATH="$(realpath "../")"; | |
local PROJECT_NAME="$(basename $PROJECT_PATH)"; | |
create_network "$PROJECT_NAME" | |
create_databases "$PROJECT_NAME" | |
create_dreamfactory "$PROJECT_NAME" | |
} | |
create_network(){ | |
local NETWORK_NAME="$1""_network" | |
if [ ! "$(docker network ls | grep $NETWORK_NAME)" ]; then | |
echo "$NETWORK_NAME network is being created"; | |
eval "docker network create $NETWORK_NAME"; | |
fi | |
} | |
create_databases(){ | |
local NETWORK_NAME="$1""_network" | |
local CONTAINER_NAME=""; | |
local VOLUME_NAME=""; | |
declare -a DATABASE_NAMES=( | |
"mariadb" | |
"redis" | |
); | |
for DATABASE_NAME in "${DATABASE_NAMES[@]}"; do | |
CONTAINER_NAME="$1""_""$DATABASE_NAME"; | |
VOLUME_NAME="$CONTAINER_NAME""_data"; | |
if [ ! "$(docker volume ls | grep $VOLUME_NAME)" ]; then | |
eval "docker volume create $VOLUME_NAME"; | |
fi | |
if [ ! "$(docker ps -a | grep $CONTAINER_NAME)" ]; then | |
eval "docker run -d --name $CONTAINER_NAME \ | |
-e ALLOW_EMPTY_PASSWORD=yes \ | |
--net $NETWORK_NAME \ | |
--volume $VOLUME_NAME:/bitnami/$DATABASE_NAME \ | |
bitnami/$DATABASE_NAME:latest"; | |
else | |
eval "docker start $CONTAINER_NAME" | |
fi | |
done | |
} | |
create_dreamfactory(){ | |
local NETWORK_NAME="$1""_network" | |
local CONTAINER_NAME="$1""_dreamfactory" | |
local VOLUME_NAME="$CONTAINER_NAME""_data" | |
local APACHE_VOLUME_NAME="$CONTAINER_NAME""_apache_data" | |
local PHP_VOLUME_NAME="$CONTAINER_NAME""_php_data" | |
declare -a VOLUME_NAMES=( | |
"$VOLUME_NAME" | |
"$APACHE_VOLUME_NAME" | |
"$PHP_VOLUME_NAME" | |
); | |
for VOLUME_NAME in "${VOLUME_NAMES[@]}"; do | |
if [ ! "$(docker volume ls | grep $VOLUME_NAME)" ]; then | |
eval "docker volume create $VOLUME_NAME"; | |
fi | |
done | |
if [ ! "$(docker ps -a | grep $CONTAINER_NAME)" ]; then | |
eval "docker run -d --name $CONTAINER_NAME -p 80:80 -p 443:443 \ | |
--net $NETWORK_NAME \ | |
--volume $VOLUME_NAME:/bitnami/dreamfactory \ | |
--volume $APACHE_VOLUME_NAME:/bitnami/apache \ | |
--volume $PHP_VOLUME_NAME:/bitnami/php \ | |
dreamfactorysoftware/df-docker:latest" | |
else | |
eval "docker start $CONTAINER_NAME" | |
fi | |
} | |
main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment