Docker クライアント + gcloud と次の gcloud コンポーネントを含む Gitlab CI パイプライン用の Docker イメージを構築しようとしています。
- kubectl
- docker-credential-gcr
これは私のdockerfileです:
FROM docker:git
RUN mkdir /opt \
&& cd /opt \
&& wget -q https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-152.0.0-linux-x86_64.tar.gz \
&& tar -xzf google-cloud-sdk-152.0.0-linux-x86_64.tar.gz \
&& rm google-cloud-sdk-152.0.0-linux-x86_64.tar.gz \
&& ln -s /opt/google-cloud-sdk/bin/gcloud /usr/bin/gcloud \
&& apk -q update \
&& apk -q add python \
&& apk add --update libintl \
&& apk add --virtual build_deps gettext \
&& cp /usr/bin/envsubst /usr/local/bin/envsubst \
&& apk del build_deps \
&& rm -rf /var/cache/apk/* \
&& echo "y" | gcloud components install kubectl docker-credential-gcr \
&& ln -s /opt/google-cloud-sdk/bin/kubectl /usr/bin/kubectl \
&& ln -s /opt/google-cloud-sdk/bin/docker-credential-gcr /usr/bin/docker-credential-gcr
CI フロー内で、docker-credential-gcr を実行する必要があります (この問題のため)。
実行可能ファイルは、実行によって示されるようにdocker-credential-gcr
内部に正しくインストールされます/opt/google-cloud-sdk/bin
docker run -i -t gitlabci-test ls /opt/google-cloud-sdk/bin
また、次のように内部/usr/bin
で正しく simlink されています。docker run -i -t gitlabci-test ls -la /usr/bin
それでも、以下の方法のいずれかでそれを呼び出そうとすると、惨めに失敗します
docker run -i -t gitlabci-test docker-credential-gcr
docker run -i -t gitlabci-test /usr/bin/docker-credential-gcr
docker run -i -t gitlabci-test /opt/google-cloud-sdk/bin/docker-credential-gcr
エラーメッセージ:
/usr/local/bin/docker-entrypoint.sh: exec: line 20: docker-credential-gcr: not found
一方、kubectl コンポーネントを実行すると正常に動作します。
docker run -i -t gitlabci-test kubectl version
コンテナーで docker-credential-gcr を実行できるように、この問題を修正する方法はありますか?