2017-04-14 7 views
9

ドッカーファイルを介してドッカーイメージを構築している間に、githubリポジトリーをクローンする必要があります。私は私のgit hubアカウントに自分の公開sshキーを追加しました。私はドッカーホストからリポジトリをクローンすることができます。 Dockerの実行時にのenv変数をdocker run --rm -it --name container_name \ -v $(dirname $SSH_AUTH_SOCK):$(dirname $SSH_AUTH_SOCK) \ -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK my_imageのように実行することによって、ドッカーホストのsshキーを使用することができます。ドッカービルド中のSSHエージェントフォワーディング

ドッカーのビルド中に同じことを行うにはどうすればよいですか?

+2

を実行するので、あなたが必要なものを使用することです'git clone'を行う秘密鍵?たぶんこれはあなたの質問に直接答えはありませんが、私はhttp://farazdagi.com/blog/2016/ssh-private-keys-on-docker-build/が参考になると思います。 – shizhz

答えて

0

残念ながら、ビルド時のボリュームマウントは現在Dockerではサポートされていないため、sshソケットをビルドコンテナに転送することはできません。

これは今かなり長い間議論の話題となっている、参照用のGitHub上で、次の問題を参照してください。

をあなたはこの機能を持っている見ることができるようにさまざまなユースケースに対して複数回リクエストされています。

ビルドの結果は

として、基礎となるホストの独立していなければならない。彼らは、ビルド時にボリュームのマウントが可搬性を破るだろうと感じるので、これまでのところ、メンテナはこの問題に対処することを躊躇していますthisで説明されています。

0

解決。 (〜/ binに/ドッキングウィンドウ-構成など)bashスクリプトを作成します。

#!/bin/bash 

trap 'kill $(jobs -p)' EXIT 
socat TCP-LISTEN:56789,reuseaddr,fork UNIX-CLIENT:${SSH_AUTH_SOCK} & 

/usr/bin/docker-compose [email protected] 

そしてDockerfileでsocatに関するを使用して:

... 
ENV SSH_AUTH_SOCK /tmp/auth.sock 
... 
    && apk add --no-cache socat openssh \ 
    && /bin/sh -c "socat -v UNIX-LISTEN:${SSH_AUTH_SOCK},unlink-early,mode=777,fork TCP:172.22.1.11:56789 &> /dev/null &" \ 
    && bundle install \ 
... 
or any other ssh commands will works 

その後docker-compose build

関連する問題