お勉強のため、jqコマンドだけを含むイメージを作成し、そのイメージをCLIとして使ってみる。作業はMacローカルで実施。
jqコンテナ
FROM alpine
こちらは以下の本で紹介されている内容です。
Dockfileを作成する。
Dockerfile
FROM alpine:3.7
RUN apk add --no-cache --virtual=build-deps wget && \
wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 && \
mv jq-linux64 /usr/local/bin/jq && \
chmod +x /usr/local/bin/jq && \
apk del build-deps
ENTRYPOINT ["/usr/local/bin/jq", "-C"]
CMD [""]
- jqに
-C
(--color-output
)オプションをつけてターミナル以外に出力する場合もカラーリングを強制 -
--virtual
で仮の名前をつけておいて後で削除
イメージをビルドする。
docker image build -t sotoiwa540/jq-alpine:1.0 .
試す。パイプして使うので-t
オプションはつけない。
echo '{"message": "hello"}' | docker container run --rm -i sotoiwa540/jq-alpine:1.0 .
(実行例)
$ echo '{"message": "hello"}' | docker container run --rm -i sotoiwa540/jq-alpine:1.0 .
{
"message": "hello"
}
$
エイリアスを設定する。
alias jq-apline='docker run --rm -i sotoiwa540/jq-alpine:1.0'
エイリアスで実行。
echo '{"message": "hello"}' | jq-apline .
(実行例)
$ echo '{"message": "hello"}' | jq-apline .
{
"message": "hello"
}
$
FROM scratch
jqバイナリをダウンロードする。
curl -Lo jq https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64
実行権限をつけておく必要がある。
chmod +x jq
Dockerfileの作成。
Dockerfile
FROM scratch
COPY jq /
ENTRYPOINT ["/jq", "-C"]
CMD [""]
ビルド。
docker image build -t sotoiwa540/jq-scratch:1.0 .
試す。
echo '{"message": "hello"}' | docker container run --rm -i sotoiwa540/jq-scratch:1.0 .
(実行例)
$ echo '{"message": "hello"}' | docker container run --rm -i sotoiwa540/jq-scratch:1.0 .
{
"message": "hello"
}
$
イメージサイズを確認。
$ docker image ls | grep sotoiwa540/jq- | grep 1.0
sotoiwa540/jq-scratch 1.0 03a5a3445b84 6 minutes ago 3.03MB
sotoiwa540/jq-alpine 1.0 1ceb11c3b68e 40 minutes ago 7.26MB
$
もともとダウンロードしたjqのサイズを確認。
$ ls -l -h jq
-rwxr-xr-x 1 sotoiwa staff 2.9M 10 20 15:44 jq
$