Created
October 13, 2015 14:50
-
-
Save ds0nt/cb9b5ea563e5d8ffa919 to your computer and use it in GitHub Desktop.
Revisions
-
ds0nt created this gist
Oct 13, 2015 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,163 @@ #!/bin/bash can_base() { _base=`pwd`/$1 } can_container() { local name="$1" local image="$2" _name=$name _image=$image _command= _context="$_base/$name" mkdir -p "$_context" echo -n "" > "$_context/env" echo -n "" > "$_context/ports" echo -n "" > "$_context/open_ports" } can_volume() { local volume="$1" mkdir -p "$_context$volume" } can_environment() { local variable="$1" local value="$2" echo "$variable=$value" >> "$_context/env" } can_volumes() { # recurses directory tree taking only the most distant leafs /db/data will not return /db dirmax=`pwd` local volumes=$(cd $_context; ls ** -R | grep ":" | sort -r | sed -e "s/://g" | while read x; do if ! echo $dirmax | grep $x 1>/dev/null; then dirmax=$(echo $x) echo $dirmax fi done; cd - 1>/dev/null) for volume in $volumes; do echo -v $_context/$volume:/$volume done | xargs echo } can_envfile() { echo --env-file=\"$_context/env\" } can_port() { local port=$1 echo "$port" >> "$_context/ports" } can_open_port() { local port=$1 echo "$port" >> "$_context/open_ports" } can_ports () { for port in $(cat "$_context/ports" | xargs); do echo -p $port done | xargs echo } can_open_ports () { for port in $(cat "$_context/open_ports" | xargs); do echo -p $port:$port done | xargs echo } can_cp() { docker run --name=tmp-$_name $_image sh docker cp $1 tmp-$_name:$2 _image=$(docker commit tmp-$_name) docker rm tmp-$_name } can_cmd() { _command=$1 } can_dae() { docker stop $_name docker rm $_name docker start $_name 2>/dev/null || docker run -d $(can_volumes) $(can_envfile) $(can_open_ports) --name=$_name $_image $_command } can_i_have_port() { port=$1 docker port $_name | grep $port | cut -d\: -f2 } set -v can_base .docker can_container markdown-mysql orchardup/mysql can_environment MYSQL_DATABASE markdown-mysql can_port 3306 can_volume "/data" can_dae mysql_port=$(can_i_have_port 3306) can_container markdown-redis redis can_port 6379 can_volume "/data" can_dae redis_port=$(can_i_have_port 6379) can_container markdown-app alpine can_environment REDIS_SERVER markdown-redis:$redis_port can_environment MYSQL_CONNECTION_STRING "root@(markdown-mysql:$mysql_port)/markdown-mysql?charset=utf8&parseTime=True" can_port 8080 can_port 5000 can_cp . /app can_cmd app/markdown can_dae http_port=$(can_i_have_port 8080) api_port=$(can_i_have_port 5000) can_container markdown-proxy dockerfile/haproxy can_volume "/haproxy-override" can_open_port 80 can_open_port 5000 tee > .docker/markdown-proxy/haproxy-override/haproxy.cfg <<\ ___________ global daemon maxconn 4096 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http-in bind *:80 bind *:5000 acl is_web url_port 80 acl is_api url_port 5000 use_backend web if is_web use_backend api if is_api backend web balance roundrobin option httpclose option forwardfor server s2 127.0.0.1:$http_port maxconn 32 backend api balance roundrobin option httpclose option forwardfor server s1 127.0.0.1:$api_port maxconn 32 listen admin bind 127.0.0.1:8080 stats enable ___________