4

これはよくある質問のようです。誰かが答えを思いついたかどうか、または誰かが何か他のことを提案できるかどうかを確認するために、もう一度質問したいと思います。

多くのコンピューターと実行サービスがあり、それらを更新するのは一般的に頭の痛い問題です。入ってくるのはDockerです。このプロセスを自動化したいと考えています。これには Docker が適していますが、チームの誰もがビルドを自動化できるようにしたいと考えています。

プロセスの一部には、いくつかの git リポジトリのクローン作成が含まれます。

私ができることの 1 つは、シェル スクリプトを使用してリポジトリをローカルに複製し、それらをイメージにコピーすることですが、自動化を想定している dockerfile があるため、そこに指示を入れるのが自然なようです。

これは、git 資格情報を提供すること以外は問題ではありません。

現在、ビルド プロセス中に id_rsa をコピーしています。ただし、それをコピーし、リポジトリからプルしてから、資格情報を削除します。Dockerfile がユーザー入力を受け入れないことを除いて、これは正常に機能するはずです。

dockerfile に ssh キーを追加しようとすると、キーのパスワードが必要になります... ユーザー入力を受け付けないため、docker は失敗します。

これを回避し、プロセスを自動化するにはどうすればよいですか?

これは dockerfile のサンプルです。

FROM ubuntu:14.04
MAINTAINER Senica Gonzalez <senica@gmail.com>
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install git-core
RUN apt-get -y install vagrant
RUN mkdir /home/.ssh
COPY id_rsa /home/.ssh/id_rsa
RUN eval "$(ssh-agent -s)"; ssh-add /home/.ssh/id_rsa; ssh-add -l
4

2 に答える 2

4

キーを追加したり削除したりしたくありません。すべてのコマンドはレイヤーを作成します。これは画像履歴に存在し、最終結果から ID を削除しても、履歴に表示されます (ID を github にコミットしてから削除し、削除をプッシュすると考えてください)。 .

最も単純なシナリオは、リポジトリへの読み取りアクセス権を持つ新しい専用 (および共有) キーを使用することです。このキーにはキー フレーズを含めないでください。そのため、インタラクティブな入力は必要ありません。

github を使用している場合は、Deploy Keys のドキュメントを確認してください(そうでない場合でも刺激になるかもしれません)。

そうは言っても、Dockerfile 内から複製することは私の選択ではありません。プロジェクトごとに Dockerfile またはそれに類似したものを使用して、ビルドの前に独立してクローン作成が行われるようにします。

于 2014-07-17T11:59:46.073 に答える