私はドッカーが初めてです。コミットされたファイルをチェックするためにプロジェクトビルドの一部として実行されるイメージを作成したいと思います。
私の要件は、Dockerファイルに次のステートメントが必要であることです
<git files>
(コマンドライン引数として)このプロセスのイメージを作成したいと思います。
現在のローカルリポジトリからgit commitedファイルリストを取得し、それらのファイルをアプリケーションに渡してスキャンする必要があります。
イメージを構築している間は、アプリケーションをコピーする必要がありますが、コンテナの実行中はgit diff
を実行して、変更されたファイルを検索し、それを引数としてアプリケーションに渡す必要があります。
Dockerコンテナでgit diff
を実行することはできますか?
更新:
Dockerから現在のリポジトリでgit diff
を実行しようとしましたが、gitリポジトリではないと言っています。 Doclabイメージをgitlab ymlファイルへの継続的な統合の一部として実行しています。
この要件を達成するために私を助けてください?
はい、できます。それについてお勧めします。
git clone
リポジトリ全体ではなく、必要なフォルダのみを複製します。したがって、Dockerfileは、たとえばdebian/ubuntuの場合があります。
FROM <your linux distribution>
ARG GIT_USER
ARG GIT_TOKEN
ARG GIT_COMMIT
ARG SW_VERSION
RUN apt-get update
RUN apt-get -y install git
RUN git clone -n https://${GIT_USER}:${GIT_TOKEN}@github.com/<your git>/your_git.git --depth 1 && cd <your_git> && git checkout ${GIT_COMMIT} <dir_you_want_to_checkout>
COPY myapp/ /app
CMD /app/entry.pl /<your_git>/<dir_you_want_to_checkout>/...
次に、あなたが知っているようにあなたが構築することができます:
docker build -t --build-arg GIT_USER=<your_user> --build-arg GIT_TOKEN=d0e4467c63... --build-arg GIT_COMMIT=a14dc9f454... <your_image_name> .
幸運を。
imageにgitがインストールされている場合は、Dockerコンテナーでgitコマンドを実行できます。インストールはベースイメージのosに依存します。centos7に基づくdockerfileの例を次に示します。
FROM centos:7
RUN yum clean all && yum install -y git