2016-10-07 6 views
2

イメージを作成しようとしています。/ tmpにSSH秘密鍵を追加し、ssh-agentを実行して、キーをもう一度削除します。Dockerfile:/ tmp上でssh-agentを実行しているときにビルド中にアクセスが拒否されました

This is the idea I'm trying to accomplish

Dockerfile:

FROM node:4.2.4 
MAINTAINER Me 

CMD ["/bin/bash"] 

ENV GIT_SSL_NO_VERIFY=1 
ENV https_proxy="httpsproxy" 
ENV http_proxy="httpproxy" 
ENV no_proxy="exceptions" 

ADD projectfolder/key /tmp/ 
RUN ssh-agent /tmp 

WORKDIR /usr/src/app 

RUN git clone [email protected]:something/target.git 

RUN rm /tmp/key 

WORKDIR /usr/src/app/target 

RUN npm install 

EXPOSE 3001 

さて問題は、ビルド・プロセス内にあります。私が構築するために、次のコマンドを使用します。

docker build -t samprog/targetimage:4.2.4 -f projectfolder/dockerfile . 

「RUNのssh-agentの/ tmp」層が協力したくないのに、仕事だけで罰金「projectfolder /キーを/ tmp /を追加」までの層。

エラーコード:

Step 9 : RUN ssh-agent /tmp/temp 
---> Running in d2ed7c8870ae 
/tmp: Permission denied 
The command '/bin/sh -c ssh-agent /tmp' returned a non-zero code: 1 

任意のアイデア?許可の問題だと思っていたので、ディレクトリが親イメージによってすでに作成されていたので、私は/ tmp/tempを作成し、そこにキーを入れました。同じエラーが発生します。

私はそれをやったSLES12 SP1の

+0

rootで試してください 'RUN ssh-agent/tmp/temp'の前に' USER root'を追加してください – VladoDemcak

+0

最後にテストする時間がありました。 'mkdir/tmp/temp'と' RUN ssh-agent/tmp/temp'の前に 'USER root'を追加すると、悲しいことに'/tmp/temp:Permission denied'の出力が変わるようです。 – samprog

答えて

4

にドッカーバージョン1.10.3を使用しています。私がしたことは、ssh-agentを取り除いたことです。ドッカーホストの~/.ssh - ディレクトリを画像の/root/.sshにコピーしてしまっただけです。

~を使用しないでください。~/.sshディレクトリをプロジェクトフォルダ内にコピーしてから、ドッカーファイルをコンテナ内にコピーしてください。次のように

最終dockerfileに見えた:

FROM node:4.2.4 
MAINTAINER me 

CMD["/bin/bash"] 

ENV GIT_SSL_NO_VERIFY=1 
ENV https_proxy="httpsproxy" 
ENV http_proxy="httpproxy" 
ENV no_proxy="exceptions" 

ADD projectfolder/.ssh /root/.ssh 

WORKDIR /usr/src/app 

RUN git clone [email protected]:something/target.git 

RUN rm -r /root/.ssh 

WORKDIR /urs/src/app/target 

RUN npm set registry http://local-npm-registry 
RUN npm install 

EXPOSE 3001 

dockerfileはまだ効率やものに改善する必要があるが、それは動作します!ユーレカ!

イメージはスクラッシュする必要があります。使用するのは安全です。ローカルレジストリでのみ使用します。

関連する問題