Makefileを使用してビルドと公開



makeとdockerfileの中にはもっとたくさんのことがあります.
あなたのドキュメンテーションで説明されるより.

イントロ


まず第一に、Dockerがコンテナの同義語であるにもかかわらず、他の方法が真実でないと認めることによって、この簡潔な思考の列車を始めましょう.
私たちはコンテナの起源に耐えることができました、しかし、私がここで説明しようとすることができた何よりもはるかにより有効な記事のトンがそこにあります.
私はコンテナ、DockerとDockerFilesがこれを読んでいる誰のための新しい条件でもないと仮定します、しかし、それがそうであるならば、あなたはおそらくチェックすることから始めることができますcontainers , docker と[ dockerfile ]( https://docs.docker.com/engine/reference/builder/ )

動機


通常、私がDockfileを書いているとき、私はこれを成功させるために必要なステップを決して忘れないことを確実にするために、または、そのコンテナーを決して忘れないでしょう.
今では、いくつかの良い言葉を使用して、この男は本当にどのようにDockerのビルドの引数を使用して動作するようにする必要があります私の時間を無駄に停止することを考えている必要がありますが、それは常にすべての引数を暗記することを否定することはありません.

Dockerfile


最初のステップ:Kubectlに会ってください


Kubectlが何をしているのか、このポストの範囲外です.それは私の心に飛び込んだ最初のものだったので、我々は例としてそれを使用している.
Kubectl用の小さな容器を作りましょう.
FROM alpine:3.12

ADD https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl /usr/local/bin/kubectl

RUN chmod +x /usr/local/bin/kubectl

ENTRYPOINT ["kubectl"]
ご覧のように、小さなdockerfileでは、2つのハードコード化されたバージョンだけが目に飛び込みます.
  • アルパインバージョンそのもの
  • Kubectlバージョン
  • 第二段階:いくつかの調整


    Luckily Dockerfile構文(年を通して進化しているかどうかでない)は、いくつかの良い修正をするのを許します:
    ARG ALP_VER=3.12
    FROM alpine:$ALP_VER
    
    ARG KCTL_VER=1.18.0
    
    ADD https://storage.googleapis.com/kubernetes-release/release/v${KCTL_VER}/bin/linux/amd64/kubectl /usr/local/bin/kubectl
    
    RUN chmod +x /usr/local/bin/kubectl
    
    ENTRYPOINT ["kubectl"]
    
    それで、私がどんな引数を渡すこともなくイメージを構築することができるので、私はそれを私が喜ばせるようにそれらの2つのバージョンを修正することができるだけでなく、(デフォルトバージョンでそれを構築するでしょう).
    もちろん、dockerfileで動作するDockerビルドコマンドを実行して問題を起こすことができますdocker build --build-arg ALP_VER=3.11 --build-arg KCTL_VER=1.18.0 -t my_kubectl:1.18.0 . .
    しかし、それはちょうど私のために十分でありませんでした.それは難しいことではありませんが、いくつかのdockerfileの引数名を覚えておかなければなりません.

    Makefile


    私は、より単純な構文を解決するだけであると決めました.
    これらの長いコマンドを入力しなかった何かだけでなく、同時に、単純な(そして醜い)bashスクリプトより少し良い何か.
    < div >
    私は今どんなバージョンでもビルドすることができます.
    <ウル>
  • デフォルトmake build
  • もう一つのアルプス版make build alpver=3.11
  • もう一人のKubectlバージョンmake build kctlver=1.17.0
  • 両方ともmake build alpver=3.11 kctlver=1.17.0
  • < ull >
    < p >私はビルドし、設定されたレジストリにプッシュします
    <ウル>
  • デフォルトmake
  • もう一つのアルプス版make alpver=3.11
  • ... など
  • < ull >
    または私は簡単に(私は変更することができます任意のファイルを開くこと)をチェックすることができます私はイメージ
    <ウル>
  • make help
  • < ull >
    < tt >リポジトリ名のようにどこかにハードコード化されたものがありますが、p >
    もちろん、これは方法だけではありません.私はそんなにナイーブではない.他にも多くのオプションがありますので、コメントエリアで知りたいです.p >