Alpine LinuxのDockerコンテナ内で使うjqをインストールする方法
※ 当ページには【広告/PR】を含む場合があります。
2020/04/22
2022/09/30
【jqコマンド応用編】xargsをwhile/forループの代わりとして使う場合の勘所
設定ファイルのいくつかはjson形式で書かれている場合に、nodejsをインストールされている環境であれば、便利なnpmユーティリティパッケージを使って、jsスクリプトで設定jsonを操作することもあるかなと思います。でも手元にシェルしかないとか、使ってたnpmパッケージが古くて謹製のnodeスクリプトのメンテナンスが面倒になってきたなど、制限された開発環境下や流行り廃りな状況では、やはりシェルスクリプトで操作できたらなーというのは、時たま思うところがあります。シェルコマンドでjsonをテキストを読み込んで直に操作するのはなかなか骨の折れる作業かと思います。そんな場合、お世話になるのが、『jq』というコマンドラインプロセッサーユーティリティです。jq is a lightweight and flexible command-line JSON processor今回は、jq
をDocker
コンテナ上のAlpine Linux
にインストールする方法と軽い動作手順を解説します。
【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集 TL;DR
この記事は、向けの内容です。Docker Alpineイメージへの導入方法は至って簡単で、公式のパッケージ版jq - alpine linexを利用するだけで解決です。
【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集 jqコマンドの導入手順
では作業を具体的にやってみます。Dockerfile
では、Dockerfileを書いて、Dockerイメージをビルドしてみます。今回はベースイメージはalpine:3.11
(※現在執筆中での最新の安定バーション)でpullしてきて動くな〜程度の動作確認ですので、ご自分の環境で動くかお試しください。なお、公式のgithubレポジトリよりプロジェクトごとクローンして、ソースビルドしても同じ模様です。詳細は参考
の方に貼ったリンクの記事に言及されているようです。コマンドをテスト
インストールが完了したら、そのままローカルでjqコマンドをゴリゴリと叩き込んでいっても良いのですが、jqが遊べるというオンラインのプレイグラウンドを使ってjsonファイルを操作するコマンドを学習するやり方を紹介します。まずはプレイグラウンドのコンソール画面ですが、以下のような4つの窓枠で構成されています。利用者は、リソースとなるjsonファイルの中身をJSON
テキストボックスの中に貼り付けて、Filter
で好みのObjectが出力できるまで実験できます。また、コンソールの下部にCheatsheet
があり、特に自動でexmaple
を生成してくれる機能を搭載しており学習する人向けにコレがかなり役立ちます。例えば、Cheatsheet
一番最初のUnchanged input
を試してみましょう。リスト右端のアイコンをクリックします。すると、選択したフィルター文字列に対応した一例が表示されます。Unchanged input
はjsonファイル入力をそのままシリアライズするもっとも単純な例ですが、特に重要なパイプライン処理(|
)や、mapなんかの一例も具に表示してくれます。この記事で全部の例を紹介するのも野暮ですので、一度プレイグラウンドをご自身の手で触ってみて、jq
の奥深さに触れてみてください。
【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集 参考にしたサイト
jq 公式 | jq is a lightweight and flexible command-line JSON processorjq playjqだけ含むコンテナの作成※ソースビルドの方からインストールされているようです。