我正在尝试构建一个带有私有(private) Node 包的 docker 容器。我关注了this guide使用 secret 安全地引用 npmrc 文件来安装依赖项。我可以在使用如下命令直接构建图像时让它工作: .当运行 docker compose build
时,它就像没有 npmrc 文件一样,在尝试下载依赖项时给我一个 401。
我在下面提供了 Dockerfile 和 docker-compose.yml 的精简版本。
Dockerfile
# syntax = docker/dockerfile:1.2
FROM node:14.17.1
COPY . .
RUN --mount=type=secret,id=npm,target=/root/.npmrc yarn --frozen-lockfile --production
EXPOSE 3000
CMD [ "npm", "start" ]
docker-compose.yml
version: '3.7'
services:
example:
build: packages/example
ports:
- "3000:3000"
secrets:
- npm
secrets:
npm:
file: ${HOME}/.npmrc
最佳答案
问题似乎是我的 docker-compose.yml 指定了容器运行时与构建时间的 secret 。尚未实现对来自 docker compose 的构建 secret 的支持。这是出色的 PR:https://github.com/docker/compose/pull/7046 .
现在,我必须使用 docker build ...
构建图像并在 docker-compose.yml 中本地引用命名图像,而不是通过 docker compose 构建。
关于node.js - 如何在docker compose secret中使用主目录中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68199826/