Skip to content

Instantly share code, notes, and snippets.

@ragusa87
Last active November 18, 2022 09:23
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ragusa87/9ffc0032747ba13349b7dfa28dfec938 to your computer and use it in GitHub Desktop.
Save ragusa87/9ffc0032747ba13349b7dfa28dfec938 to your computer and use it in GitHub Desktop.
#!/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