为什么 docker-compose 卷绑定在构建过程中不起作用?我应该始终复制构建文件所需的内容吗?

问题描述 投票:0回答:1

我使用 docker compose 进行非常基本的节点映像配置。我可以在容器构建后使用

npm install
。但我想在此期间这样做,并且我在 docker-compose.yaml 中绑定的卷似乎不起作用,只有在构建之后才起作用。

这是正确的行为吗?如果是,那么我应该在构建期间复制 package.json 文件来安装它吗? 这里困扰我的事情是,我需要使构建的上下文更宽,以从不同的文件夹(../frontend/package.json)获取文件,这似乎是错误的,但它是一个大的吗?交易?

错误

Could not read package.json: Error: ENOENT: no such file or directory, open '/var/www/html/frontend/package.json'

docker-compose.yaml

  node:
    container_name: ${PROJECT_NAME}_node
    build:
      context: ./node
    command:
      - npm run dev -- --host
    ports:
      - '8012:5173'
    volumes:
      - ./frontend:/var/www/html/frontend

Docker 文件

FROM node:latest

WORKDIR /var/www/html/frontend

RUN npm install
RUN npm run build
docker npm docker-compose docker-volume docker-build
1个回答
0
投票

使用 Dockerfile,您可以构建 Docker 映像,并且 Docker Compose 从现有映像创建容器。 或者,您可以在撰写文件中组合这两个命令(使用构建选项)并舍入

docker compose up -d --build
命令。此命令首先构建图像 - 与运行
docker build --tag image_name .
命令时相同。最后,创建容器。

因此,如果您想在构建时运行

npm install
,您需要使用 Dockerfile 中的 COPY 或 ADD 命令将所需的文件添加到映像中

© www.soinside.com 2019 - 2024. All rights reserved.