簡體   English   中英

使用 SSH 密鑰從 docker 內部的私有存儲庫安裝 npm 模塊

[英]Using SSH key for install npm module from private repository inside docker

我為 nodejs 項目制作容器。 在項目內部,我使用的是私有存儲庫。 我需要訪問它。 為此,我正在使用下一個 Dockerfile

FROM node:15

RUN echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
COPY keys/ssh_config /root/.ssh/config
COPY keys/bitbucket /root/.ssh/bitbucket
RUN chmod 600 /root/.ssh/bitbucket

RUN npm install -g typescript ts-node
WORKDIR /var/www
EXPOSE 3000

ssh_config 文件是

Host bitbucket.org
     IdentityFile /root/.ssh/bitbucket
     StrictHostKeyChecking no

在我的 package.json 我添加了下一行

"my-interfaces": "git+ssh://bitbucket.org:MY_USER_NAME/my-interfaces.git#master",

使用 docker-compose 構建容器后,我在容器內登錄並運行npm i但最后我看到下一個錯誤

npm ERR! code 128
npm ERR! command failed
npm ERR! command git ls-remote ssh://git@bitbucket.org/MY_USER_NAME/my-interfaces.git
npm ERR! Permission denied (publickey).
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 ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-30T08_19_38_999Z-debug.log

我嘗試了另一種方法,我在容器內生成 SSH 密鑰並將公鑰添加到 bitbucket,但我看到了相同的錯誤消息。

您可以使用主機系統的 ssh 訪問。

FROM node:15

RUN apt install openssh-client git

RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts

RUN --mount=type=ssh npm install -g typescript ts-node
WORKDIR /var/www
EXPOSE 3000

圖像必須按如下方式構建:

DOCKER_BUILDKIT=1 docker build --ssh default .

https://docs.docker.com/develop/develop-images/build_enhancements/#to-enable-buildkit-builds

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM