在Docker中使用GitHub Private Repo Deploy键进行NPM安装



我的用例是我有多个使用相同中间件的快递微服务,我想以每个中间件的NPM模块的格式创建一个不同的回购。p>每个存储库都是一个私人仓库,可以连接一个部署密钥(可以是不同的键或相同的键(

所有这些都可以在本地使用。但是,当我尝试使用我的docker-compose设置使用它时,它会在构建阶段的NPM安装步骤中失败。

dockerfile

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

docker-compose.yml

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

我知道这不起作用,因为我没有在Docker上下文中使用的本地系统上使用的部署密钥。

我已经四处寻找解决方案,没有一个看起来很容易/非骇客

  1. 复制键和南瓜(Cons:不确定我如何在Docker-Compose文件中执行此操作(没有levaving-ssh-keys-behind/

  2. 在构建步骤中复制键并添加到图像中。(缺点:不是很安全:((

  3. 使用密钥作为构建参数。(缺点:见2(

  4. dockerise类似于https://www.vaultproject.io/首先运行该键,添加键并在节点容器中使用该密钥以获取最新的密钥。(缺点:可能有很多工作,也许还有其他问题?(

  5. 使用Docker Secrets和Docker Stack部署并存储docker Secrets中的密钥(CON:DOCKER Stack Deploy尚未支持Docker卷。#产生a-Bundle不支持的键"卷"(

我的问题是自动化的最多安全可能的解决方案是什么(对文件的用户使用最小的手动步骤(?实施时间不太关心。我试图避免在任何敏感数据中检查任何敏感数据,同时使其他人可以在本地运行。

让我们尝试此新功能:docker多阶段构建

您可以选择性地将文物从一个阶段转换为另一个阶段,而将您不需要的一切都留在了最终图像中。

这个想法是构建临时基础图像,然后再次启动构建,仅从上一个图像中获取所需的内容。它在 same dockerfile中使用多个:

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
...

Docker将丢弃所有您不从第一个中保存的东西。

最新更新