node.js - 私有(private) Node 模块拉入 docker

标签 node.js docker ssh

我有一个 node_module 的私有(private)存储库,我通过将它包含在 package.json 中来安装它

ssh://git@github.com/iamsaquib/<pivate-repo>.git
当我在 docker 镜像中复制所有服务器文件并尝试执行 npm install 时,它无法安装软件包并抛出我没有适当的访问权限。我想我必须通过在 Dockerfile 中复制我的 id_rsa.pub 并将其添加为授权 key 来进行授权,这样做的正确方法是什么?
Dockerfile
FROM node:12-slim

ENV NODE_ENV=development

WORKDIR /app
USER root

COPY . .

RUN ./install.sh
RUN ./build.sh

EXPOSE 8000 

CMD ["./run.sh"]

最佳答案

您需要挂载 SSH 私钥 ( /home/yourname/.ssh/id_rsa )。
您应该避免将私钥放在 Docker 镜像中。一种解决方法可能是 multi-stage image (安全性可能仍有争议)。

FROM node:12-slim as installer
ENV NODE_ENV=development
WORKDIR /app
USER root
COPY /home/yourname/.ssh /home/root/.ssh
COPY /home/yourname/.gitconfig /home/root/.gitconfig
COPY . .
RUN ./install.sh
RUN ./build.sh
RUN rm -rf /home/root/.ssh
RUN rm -rf /home/root/.gitconfig

# Final image
FROM node:12-slim
WORKDIR /app
ENV NODE_ENV=development
USER root
COPY --from=installer /app .
EXPOSE 8000 
CMD ["./run.sh"]

关于node.js - 私有(private) Node 模块拉入 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62682439/

相关文章:

c# - Docker:应用程序通过 docker-compose up 可以正常工作,但是如何通过 Visual Studio 运行它并进行调试?

ruby-on-rails - Rails将请求发送到其他容器[无法打开TCP连接]

jenkins - 克隆 Bitbucket 存储库而不启动 ssh-agent

ssh - sshd_config 中 maxstartups 和 maxsessions 的区别

mysql - 写入 my.cnf 时出错 : Permission denied

javascript - 使用 mongoose 有条件地删除或添加文档数组中的元素

node.js - ubuntu npm安装错误

node.js + express + socket.io 无法将 javascript 文件加载到 index.html

docker - 本地机器上的领事健康检查失败

json - 在 node package.json 中,使用额外参数从另一个脚本调用脚本,在这种情况下添加 mocha watcher