간단하게 만들어본 유틸리티용 도커입니다.

도커 운용 시스템에 여러 유틸이 설치되어 있지 않을 가능성을 생각해서 간단한 유틸리티 도커를 이용하는 방법입니다.

간이용이라서, 아직 복잡한 건 못합니다. 현재 디렉토리 이하의 파일을 다루는 정도죠. NodeBB 설치단계에서 JSON 파일을 다루기 위해 만든거라 jq 만 설치합니다.

물론 jq를 NodeBB 도커에 설치하고 쓰는 방법도 있지만, . 여러 용도로 쓸수 있을 것 같아서 왠지 이렇게 해보고 싶었습니다.

다음 처럼 사용합니다.

./utils jq a.json b.json > c.json   

최신 코드는 이곳에
https://github.com/qgp9/nodebb-docker-dev/blob/master/bin/utils

#!/bin/bash
CMD=${1:-"/bin/bash"} && shift
IMAGENAME=qgp9_utils

## Orignal script file if this is symbolic link
oScript=$( echo $BASH_SOURC | perl -MCwd+abs_path -nlE'$_=abs_path$n while $n=readlink $_;say abs_path $_' )
## Get Date of qgp9_utils images
imageDateForm=$(docker inspect -f '\{\{.Created}}' $IMAGENAME)
export imageDate=$( test -n "$imageDateForm" && date -d "$imageDateForm" +%s )
export scriptDate=$(date -r "$oScript" +%s);
if perl -e'$i=$ENV{imageDate}||0;$f=$ENV{scriptDate}||0;exit ($i<$f?0:1)' ;then
  TMPDIR=$(mktemp -d);

  cat > $TMPDIR/Dockerfile << EOFF
  FROM alpine
  MAINTAINER qgp9 

  # BASE SET
  RUN apk update && apk upgrade && apk update
  RUN apk add --update bash && rm -rf /var/cache/apk/*  

  # ADDITIONAL SET

  # UTILS
  RUN apk add --update jq perl && rm -rf /var/cache/apk/*  

  RUN mkdir /data
  WORKDIR /data
  RUN touch created-${scriptDate}.log


  CMD ["/bin/bash"]
EOFF

echo "(RE)BUILD a Docker image : $IMAGENAME"
  docker build -t qgp9_utils $TMPDIR  2>&1 > $TMPDIR/build.log || cat $TMPDIR/build.log

fi

docker run -it --rm -v $PWD:/data $IMAGENAME $CMD $@