[ -z "$DOCKER_CERT_PATH" -o ! -e "$DOCKER_CERT_PATH" ] && which docker-machine>/dev/null && docker-machine ls -q 2>/dev/null |grep -qFm1 docker && eval "$(docker-machine env docker)" 2>/dev/null
fi
-_docker_name() {
- if [ -n "$1" -a ! -e "$1" ]; then
- echo "$1"
- return
- elif [ -n "$1" -a -e "$1" ]; then
- cd "$1" 1>&2 || return 1
- shift
- elif [ -e Dockerfile ]; then
- [ 1 = 1 ]
- fi
- basename $(pwd)
-}
-
docker_build() {
- local docker_name=$(_docker_name "$1") || return ; shift
- [ ! -e Dockerfile ] && echo "Dockerfile missing in $(pwd)" 1>&2 && return
+ shell_help "Usage: $FUNCNAME [DIR_DOCKERFILE]" "$@" && return
+ local docker_name=$(basename "$(pwd)")
+ local pwd=""
+ if [ -n "$1" -a -d "$1" ]; then
+ pwd=$(pwd)
+ cd "$1" || return
+ docker_name=$(basename "$(pwd)")
+ shift
+ fi
+ [ ! -e Dockerfile ] && echo "$FUNCNAME: Dockerfile missing in $(pwd)" 1>&2 && return
+
+ local ex=0
if [ -n "$(docker images -q $docker_name 2>/dev/null)" ]; then
- echo "$docker_name already build."
- return 1
+ echo "$FUNCNAME: $docker_name already build."
+ ex=1
else
perl -ne '/^\s*\#\s*DOCKER_BUILD\s*(.*?)$/ and system "$1"' Dockerfile
- docker build --rm --force-rm=true -t $docker_name .
+ docker build --rm --force-rm=true -t $@ $docker_name .
if [ "$?" != 0 ]; then
docker rmi -f $(docker images -qf "dangling=true")
- echo "Review your Docker file"
- return 1
+ echo "$FUNCNAME: Review your Docker file"
+ ex=1
fi
fi
- return 0
+ [ -n "$pwd" ] && cd "$pwd"
+ return $ex
}
docker_run() {
- local docker_name=$(_docker_name "$1") || return
- #[ -n "$1" -a -d "$1" ] && cd "$1"
- shift
- [ -e Dockerfile ] && perl -ne '/^\s*\#\s*DOCKER_RUN\s*(.*?)$/ and $RUN=1 and system "$1"; END{exit ($RUN ? 0 : 1)}' Dockerfile && return
- docker run --rm -it --name $docker_name --hostname $docker_name $@ $docker_name
+ shell_help_noarg "Usage: $FUNCNAME [DIR_DOCKERFILE]" "$@" && return
+
+ local docker_name=$(basename `pwd`)
+ local pwd=""
+ if [ -n "$1" ]; then
+ [ -d "$1" ] && docker_name=$(basename $1) && pwd=`pwd` && cd "$1"
+ shift
+ fi
+ local opt
+ [ -z "$@" ] && opt=$(perl -ne '/^\s*\#\s*DOCKER_RUN\s*(.*?)$/&&print "$1 "' "Dockerfile" 2>/dev/null)
+ eval docker run --rm -it --name $docker_name --hostname $docker_name $opt$@ $docker_name
+
+ [ -n "$pwd" ] && cd "$pwd"
}
docker_clean() {