イメージにrsaキーを含めてビルド時にgit repoをイメージにクローンすることができます。しかし、私は実際にドッカーがレポを構築する際にこのキーを保持する必要はありません。誰もこれを処理する方法についての良い推薦を持っていますか?ドッカーのドキュメントやさまざまなスレッドからは、ビルドコンテキストの外側にあるファイルがCOPY
には見えないと思われます。別に私が使用することに興味がない次のソリューションから:Docker:ビルドコンテキストの外からイメージにrsaキーを追加する
How to include files outside of Docker's build context?
これに対するより良い解決策はありますか?あるいは、ビルドレポにキーを保持するか、使用したいRSAキーの場所からビルドする必要がありますか?
ビルドレポからキーをgitignoreし、私がクローンするたびにそれを入れ、readmeに書き留めておけば他の開発者もこれを行うことができます。
---私のソリューション---
私は、このための「正しい」答えがあると思いますが、ここで私が一緒に行った解決策だっませません。
私はLinuxユーザー(どこか)を作成し、それにキーを生成します。次に、レポ・クローニング権限のみを持つgitlabでユーザを作成します。私は、linuxユーザの公開鍵をgitlabユーザに追加します。ビルドのために.sshフォルダを作成し、設定ファイルを使ってユーザの秘密鍵をコピーします。私はちょうどドッカーのビルドレポにそのユーザーのキーを格納します。
ビルド手順:
RUN mkdir ~/.ssh
RUN touch ~/.ssh/known_hosts
RUN ssh-keyscan -t rsa gitlab_host > ~/.ssh/known_hosts
COPY ./ssh/config /root/.ssh
COPY ./ssh/id_rsa_app /root/.ssh
RUN chmod 600 /root/.ssh/id_rsa_app
SSHの設定ファイル:
Host gitlab-app
HostName gitlab_host
IdentityFile /root/.ssh/id_rsa_app
IdentitiesOnly yes
今のgitのクローンは、ビルドの内部で動作します。
ありがとう、これは実行可能な解決策になります。私たちは、 'app'という名前のLinuxユーザーを作成し、そのキーを作成し、gitlab上にreposを複製する権限しか持たない 'app'ユーザーを作成することにしました。次に、このキーを設定ファイルとともにドッカーのreposに入れます。上記を参照。 – ThriceGood