我的用例是我有多个使用相同中间件的快速微服务,我想为每个中间件创建一个npm模块格式的不同repo.
每个仓库都是私人仓库,可以附加部署密钥(可以是不同的密钥或相同)
所有这些都可以在本地运行.但是当我尝试在我的docker-compose设置中使用它时,它在构建阶段的npm安装步骤失败.
Dockerfile
FROM node:alpine
RUN npm install --production
CMD npm start
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
services:
node-api:
build:
context: .
dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,因为我没有在Docker上下文中使用我的本地系统上的部署密钥.
我四处寻找解决方案,似乎没有一个非常容易/非hacky
复制密钥并压缩(缺点:不确定我是如何在docker-compose文件中执行此操作)http://blog.cloud66.com/pulling-git-into-a-docker-image-without-leaving-ssh-键隐藏/
在构建步骤中复制键并添加到图像.(缺点:不太安全:()
使用密钥作为构建参数.(缺点:见2)
像https://www.vaultproject.io/这样的Dockerise 首先运行它,添加密钥并在节点容器中使用它来获取最新的密钥.(缺点:可能很多工作,也许还有其他问题?)
使用Docker机密和docker堆栈部署并将密钥存储在docker机密中(CON:docker stack deploy还不支持docker卷.请参阅https://docs.docker.com/compose/bundles/#producing-a-bundle 不支持的密钥'卷')
我的问题是什么是最安全的自动化解决方案(文件用户的最小手动步骤)?实施时间不太重要.我试图避免检入任何敏感数据,同时让其他人可以轻松地在本地运行.
在 Azure DevOps 管道中,如何取消作业池的所有待处理作业。我有很多工作在排队,但看不到在哪里可以取消我正在等待的所有工作。