我正在尝试从Dockerfile构建docker镜像,其中需要执行的步骤之一是安装仅可通过私有Gitlab存储库获得的依赖项。这意味着容器将需要访问SSH密钥来进行克隆。我知道这不是最安全的方法,但这只是一个中间容器,一旦放置了运行应用程序所需的所有组件,就会被删除。
问题是,无论我尝试什么,都无法在docker内部获取ssh代理以建立连接。我收到以下错误消息:
如果我尝试仅克隆存储库而不运行
问题是,无论我尝试什么,都无法在docker内部获取ssh代理以建立连接。我收到以下错误消息:
npm ERR! Host key verification failed.
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
如果我尝试仅克隆存储库而不运行
npm install
,也会发生同样的事情。这是我使用的Dockerfile:FROM risingstack/alpine:3.4-v6.9.4-4.2.0
RUN apk update
RUN apk add openssh
ARG SSH_KEY
# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
chmod 700 /root/.ssh && \
ssh-keyscan github.com > /root/.ssh/known_hosts
# Add the keys and set permissions
RUN echo "$SSH_KEY" > /root/.ssh/id_rsa && \
chmod 700 /root/.ssh/id_rsa && \
RUN eval "$(ssh-agent -s)" && ssh-add /root/.ssh/id_rsa && ssh -o StrictHostKeyChecking=no git@github.com || true && npm install
并且命令(我将私钥作为构建参数传递):
docker build -t test --build-arg SSH_KEY="$(cat ~/.ssh/id_rsa)" .