0

Docker イメージに追加する必要があるプライベート git リポジトリがあります。そのために、同じディレクトリにローカルでクローンを作成しDockerfile、次の docker コマンドを使用します。

ADD my_repo_clone /usr/src/

私のレポには、私が複製したバージョンタグがありv1ます. したがって、複製するファイルは常に同じです。

問題は、この docker イメージをビルドすると、古いイメージを置き換えるのではなく、常に新しいイメージを取得することです。

docker build --rm -t "org_name/image_name" .

どうやら、ctimeファイルの .

touch複製されたレポと変更atimeを試み、固定の日付にしようとしましmtimeたが、まだ十分ではありません。

Docker が常に新しいイメージを作成するのを (ファイル ハッシュを計算して再度ビルドする Docker ソース コードを変更せずに) 停止するにはどうすればよいですか。

または、イメージ構築プロセス中にリポジトリを複製するにはどうすればよいですか? (このためには、リポジトリがプライベートであるため、SSH 転送が必要です。また、イメージのビルド プロセス中に SSH エージェント転送を機能させることもできませんでした)

4

1 に答える 1

0

since you don't care about the repository itself and just need the files for tag v1, you could use git archive instead of git clone to produce a tar archive holding the files for tag v1.

Finally, the docker ADD directive to inject the archive into the image.

The mtime of the produced tar archive will be the time of the tag as documented:

git archive behaves differently when given a tree ID versus when given a commit ID or tag ID. In the first case the current time is used as the modification time of each file in the archive. In the latter case the commit time as recorded in the referenced commit object is used instead.


try:

git archive --remote=https://my.git.server.com/myoproject.git refs/tags/v1 --format=tar > v1.tar
于 2015-10-08T13:00:43.960 に答える