node.js - 如何在docker compose secret中使用主目录中的文件?

标签 node.js docker docker-compose

我正在尝试构建一个带有私有(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/

相关文章:

node.js - 返回时 typescript 不读取null

javascript - MEAN Stack - 我应该分离服务器吗?

docker - 如何使用 exec,rw 标志挂载 docker tmpfs?

c# - Visual Studio 2019不会在项目打开时提取所需的Docker镜像

docker-compose 启动的 Docker 容器状态总是退出

node.js - 如果 Upsert 是更新,如何撤消更新;如果 Upsert 是使用 Sequelize 插入,则如何删除

javascript - socket.io 连接返回一个空数组。在不重新加载页面的情况下在 React 中接收数据的方法?

docker - 在Kakfa中安装JDBC SQL Server驱动程序-image wurstmeister/kafka

docker - Docker卷是分区还是子目录?

docker-compose up 失败,出现以下错误无法解决 : rpc error: code = Unknown desc = failed to solve with frontend dockerfile. v0: