当前位置: 首页 > 知识库问答 >
问题:

在docker中的构建阶段使用github private repo deploy密钥进行npm安装

冯嘉珍
2023-03-14

所有这些在本地都能正常工作。然而,当我试图在docker-compose设置中使用它时,它在构建阶段的npm安装步骤中失败了。

DockerFile

FROM node:alpine
RUN npm install --production
CMD npm start

Docker-compose.yml

services:
   node-api:
        build:
            context: .
            dockerfile: Dockerfile

Dockerise像https://www.vaultproject.io/这样的东西,首先运行它,添加键并在节点容器中使用它来获得最新的键。(缺点:可能有很多工作,可能还有其他问题?)

使用Docker secrets和Docker stack deploy并将密钥存储在Docker secrets中(CON:Docker stack deploy尚未支持Docker卷。请参阅此处https://docs.Docker.com/compose/bundles/#production-a-bundle unsupported key“volumes”)

我的问题是什么是最安全的可能的解决方案是自动化的(最小的手动步骤为文件的用户)?执行的时间不是一个令人关注的问题。我试图避免签入任何敏感数据,同时让其他人可以轻松地在本地运行。

共有1个答案

颛孙博易
2023-03-14

让我们来试验一下这个新特性:Docker多阶段构建

您可以有选择地将工件从一个阶段复制到另一个阶段,在最终图像中留下您不想要的所有东西。

这个想法是构建一个临时的基映像,然后重新开始构建,只从前一个映像中获取您想要的内容。它在同一个DockerFile中使用多个FROM:

FROM node as base-node-modules
COPY your_secret_key /some/path
COPY package.json /somewhere
RUN npm install <Wich use your key>

FROM node #yes again!
...
...
COPY --from=base-node-modules /somewhere/node_modules /some/place/node_modules
...
... # the rest of your Dockerfile
...
 类似资料:
  • 问题内容: 我的用例是,我有多个使用相同中间件的快速微服务,并且我想为每个中间件创建一个npm模块格式的不同存储库。 每个存储库都是私有存储库,可以附加一个部署密钥(可以是不同的密钥,也可以是相同的密钥) 所有这些在本地都可以。但是,当我尝试在docker-compose安装程序中使用它时,它在构建阶段的npm install步骤中失败。 Docker文件 docker-compose.yml 我

  • 问题内容: 如何在中指定多阶段构建? 对于每个变体(例如dev,prod …),我都有一个包含2个docker文件的多阶段构建: 开发人员:+ 或产品:+ 文件(所有变体通用): 档案: 档案: 没有docker-compose,我可以构建为: 根据compose-file doc,我可以指定要构建的Dockerfile。 但是,如何在其中指定2个Dockerfile (用于多阶段构建)? 问题答

  • Docker的口号是 Build,Ship,and Run Any App,Anywhere,在我们使用 Docker 的大部分时候,的确能感觉到其优越性,但是往往在我们 Build 一个应用的时候,是将我们的源代码也构建进去的,这对于类似于 golang 这样的编译型语言肯定是不行的,因为实际运行的时候我只需要把最终构建的二进制包给你就行,把源码也一起打包在镜像中,需要承担很多风险,即使是脚本语

  • 我在代码构建过程的构建阶段遇到以下错误: “执行命令时出错:docker build-t…”原因:退出状态1 我有一个使用ecr权限设置的代码构建服务角色,aws ecr登录阶段已经成功,我的buildspec.yml非常简单——几乎只是标准模板。运行时是亚马逊管理的ubuntu镜像,标准。 Docker构建失败的原因有哪些?有没有人建议进行故障排除? 谢谢你 完整buildspec.yml文件:

  • FROM alpine:3.9.6 as build ​ # 构建xlswriter扩展,根据自身需要替换版本号 ENV XLSWRITER_VERSION 1.3.4.1 ​ RUN apk update \ && apk add --no-cache php7-pear php7-dev zlib-dev re2c gcc g++ make curl \ && curl -fs

  • 我发现了很多问题和教程,最后才把这些都放在一起。想把它记录下来,这样别人就可以省下很多时间的沮丧。 我试图在BitBucket上获得一个私人git存储库,使用部署密钥与Spring Boot Config Server一起工作,并在Docker中运行。我遇到了很多问题。 如何使用应用程序进行实际配置。yml文件 我似乎不知道我应该把SSH信息放在哪里。所有教程似乎都是针对https的。 我一直收到