2016-05-03 9 views
9

私は、Dockerfileをパッケージ化してWebアプリケーションをコンテナに配置しようとしています。 Dockerの画像作成中にgitリポジトリからappのコードを取得します。Dockerfileをキャッシュする方法を防止するには

........ 
RUN git clone --depth=1 git-repository-url $GIT_HOME/ 
RUN mvn package -Dmaven.test.skip 
........ 

私はドッキングウィンドウがRUN git clone --depth=1 git-repository-url $GIT_HOME/のステップをキャッシュしませんたくなるように、進行ドッカーのイメージ構築に反映させることができるリポジトリに更新: はここDockerfileのスナップショットです。それを達成することは可能ですか?

答えて

8

Issue 1996はまだ利用できませんが、following workaroundを持っている:すべてのビルドのためのARG CACHE_DATE行の後にキャッシュを無効になり

FROM foo 
ARG CACHE_DATE=2016-01-01 
RUN git clone ... 

docker build --build-arg CACHE_DATE=$(date) .... 

+0

感謝を。 しかし、私はDockerイメージを構築するために雲CaaSを使用するので、私のためには機能しません。ドッカーの引数を渡す方法はありません。 – Raindy

+0

は私にとってはうまくいきません。 Dockerバージョン17.05.0-ce、build 89658be –

+0

@StephanRichterおよびhttps://github.com/moby/moby/pull/10682#issuecomment-178794901? – VonC

15

別の回避策:

あなたはgithubの(またはgitlabまたはビットバケットあまりにも最も可能性が高い)を使用する場合は、ダミーの場所にあなたのレポのgithubののAPIの表現を追加することができます。とき頭が変更

ADD https://api.github.com/repos/$USER/$REPO/git/refs/heads/$BRANCH version.json 
    RUN git clone -b$BRANCH https://github.com/$USER/$REPO.git $GIT_HOME/ 

API呼び出しがドッキングウィンドウのキャッシュを無効にする、異なる結果が返されます。

あなたがプライベートリポジトリを扱っている場合は、そのようなpersonal access tokengithub's x-oauth-basic authentication schemeを使用することができますに:

ADD https://$ACCESS_TOKEN:[email protected]/repos/$USER/$REPO/git/refs/heads/$BRANCH version.json 

(認証を明確に示唆した編集のためのTHXの@captnolimar)

2

あなたはgithubのあなたを使用している場合github APIを使用して特定のRUNコマンドをキャッシュできません。 あなたはJSONをパースするためにインストールJQしておく必要があります。-y JQをインストールapt-getを

例:

docker build --build-arg SHA=$(curl -s 'https://api.github.com/repos/Tencent/mars/commits' | jq -r '.[0].sha') -t imageName . 

Dockerfileで(ARGコマンドを実行する前に、右でなければなりません):

ARG SHA=LATEST 
RUN SHA=${SHA} \ 
    git clone https://github.com/Tencent/mars.git 

またはjqをインストールしたくない場合

SHA=$(curl -s 'https://api.github.com/repos/Tencent/mars/commits' | grep sha | head -1) 

リポジトリに新しいコミットがある場合は、git clon eが実行されます。

0

githubのプライベート・レポのために、また、あなたのユーザ名とパスワードを渡すことができます:あなたのアドバイスのための

RUN git clone -b$BRANCH https://$USER:[email protected]/$USER/$REPO.git $GIT_HOME/

+0

あなたの答えにはビットフォーマットが必要です – Billa

+0

私の管理者に1つのリポジトリを複製させる場合、私は自分のパスワードを渡したくありません。 – Kangur

関連する問題