Skip to content

Instantly share code, notes, and snippets.

@FredLackeyOfficial
Created June 21, 2017 18:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FredLackeyOfficial/7c164ba5a28a5c696a355f8826cdb567 to your computer and use it in GitHub Desktop.
Save FredLackeyOfficial/7c164ba5a28a5c696a355f8826cdb567 to your computer and use it in GitHub Desktop.
Bash script to bring up Dreamfactory in Docker
#!/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