Last active
November 18, 2022 09:23
-
-
Save ragusa87/9ffc0032747ba13349b7dfa28dfec938 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 | |
# | |
# Create environement for development. | |
# docker script is inspired by https://github.com/jessfraz/dockerfiles | |
# | |
# | |
# 1 = docker name | |
docker_remove(){ | |
local name=$1 | |
local state | |
state=$(docker inspect --format "{{.State.Running}}" "$name" 2>/dev/null) | |
if [[ "$state" == "false" ]]; then | |
docker rm "$name" >/dev/null | |
fi | |
} | |
# 1 = docker name | |
docker_stop(){ | |
local name=$1 | |
local state | |
state=$(docker inspect --format "{{.State.Running}}" "$name" 2>/dev/null) | |
if [[ "$state" == "true" ]]; then | |
docker stop "$name" >/dev/null | |
fi | |
} | |
# 1 = docker name | |
show_ip(){ | |
echo "$1 > $(docker inspect --format "{{.NetworkSettings.IPAddress}}" "$1")" | |
} | |
# 1 = docker name | |
docker_clear(){ | |
docker_stop $1 | |
docker_remove $1 | |
} | |
# 1 = dir | |
create_dir(){ | |
[ -d $1 ] || mkdir -p $1 | |
} | |
# no params | |
create_redis(){ | |
local DOCKER_NAME=redis | |
local VERSION=3.2.11 | |
docker_clear $DOCKER_NAME | |
docker run -d --name $DOCKER_NAME redis:$VERSION >/dev/null | |
show_ip $DOCKER_NAME | |
} | |
# 1 = mysql data volume | |
# 2 = mysql root password | |
# 3 = mysql version | |
create_mysql(){ | |
local VERSION=5.7.20 | |
local PASSWORD=root | |
local DOCKER_NAME=mysql | |
local DIR=`pwd`/mysql | |
if [ $# -gt 0 ]; then | |
DIR=$1 | |
fi | |
if [ $# -gt 1 ]; then | |
PASSWORD=$2 | |
fi | |
if [ $# -gt 2 ]; then | |
VERSION=$3 | |
fi | |
create_dir $DIR | |
docker_clear $DOCKER_NAME | |
docker run --name $DOCKER_NAME -v $1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=$PASSWORD -d mysql:$VERSION >/dev/null | |
show_ip $DOCKER_NAME | |
} | |
# no param | |
create_mailcatcher(){ | |
local VERSION=latest | |
local DOCKER_NAME=mailcatcher | |
docker_clear $DOCKER_NAME | |
docker run --name $DOCKER_NAME -d schickling/mailcatcher:$VERSION >/dev/null | |
show_ip $DOCKER_NAME | |
} | |
# 1 = elasticsearch volume | |
create_elasticsearch1(){ | |
local DOCKER_NAME=es176 | |
local DIR=$1 | |
local TMP_DIR=/tmp/es | |
# Create a dockerfile and build it | |
create_dir $TMP_DIR | |
cat > $TMP_DIR/Dockerfile << EOF | |
FROM elasticsearch:1.7.6 | |
COPY elasticsearch.yml /usr/share/elasticsearch/config/ | |
RUN /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head | |
VOLUME /usr/share/elasticsearch/data | |
EOF | |
cat > $TMP_DIR/elasticsearch.yml << EOF | |
script: | |
inline: true | |
indexed: true | |
EOF | |
docker_clear $DOCKER_NAME | |
docker build $TMP_DIR -t $DOCKER_NAME >/dev/null | |
rm $TMP_DIR/Dockerfile | |
rm $TMP_DIR/elasticsearch.yml | |
# data dir | |
if [ $# -eq 1 ]; then | |
DIR=$1 | |
fi | |
# run the new docker.. | |
create_dir $DIR | |
docker run --name $DOCKER_NAME -v $DIR:/usr/share/elasticsearch/data -d $DOCKER_NAME:latest >/dev/null | |
show_ip $DOCKER_NAME | |
} | |
# 1 = elasticsearch volume | |
create_elasticsearch6(){ | |
local DOCKER_NAME=es6 | |
local DIR=$1 | |
docker_clear $DOCKER_NAME | |
# run the new docker.. | |
create_dir $DIR | |
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name $DOCKER_NAME -v $DIR:/usr/share/elasticsearch/data -d docker.elastic.co/elasticsearch/elasticsearch:6.1.3 >/dev/null | |
show_ip $DOCKER_NAME | |
} | |
# arg 1 is the mysl root password. | |
MYSQLPASSWORD=root | |
if [ $# -eq 1 ]; then | |
MYSQLPASSWORD=$1 | |
fi | |
create_redis | |
create_mysql ~/PhpstormProjects/mysql/data $MYSQLPASSWORD | |
create_elasticsearch1 ~/PhpstormProjects/elasticsearch1 | |
create_elasticsearch6 ~/PhpstormProjects/elasticsearch6 | |
create_mailcatcher | |
# docker run --name redisadmin tenstartups/redis-commander --net=host --redis-host=search.generalmedia.ch -P 8081:8081 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment