使用 docker-compose 和volumes时,如果node_modules尚未在项目目录中创建,则会出现问题

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

我正在努力解决一个问题,即应该在运行 docker 之前创建节点模块的文件夹,否则,我会找不到 vite。

docker-compose.yml

version: "3.4"

services:
  node:
    build:
      context: ..
      dockerfile: ./docker/node/Dockerfile
    container_name: node
    ports:
      - "8000:8000"
    volumes:
      - node_modules:/srv/app/node_modules
volumes:
  node_modules:
    driver: local
    driver_opts:
      type: "none"
      o: "bind"
      device: "../node_modules"

我的节点

Dockerfile
:

FROM node:alpine

WORKDIR /srv/app

# Copy package.json and package-lock.json to the working directory
COPY package*.json ./

RUN npm install

# Copy the rest of the application files
COPY . .


EXPOSE 8000

CMD ["npm", "run", "dev"]

我的项目结构是:

|-- docker/
|   |-- node/
|       |-- Dockerfile
|   |-- docker-compose.yml
|-- package.json
|-- package-lock.json
|-- other vue js project structure

我遇到的错误是

ERROR: for node  Cannot create container for service node: failed to mount local volume: mount /home/mohammad/Desktop/Vuejs/vite-project/node_modules:/var/lib/docker/volumes/docker_node_modules/_data, flags: 0x1000: no such file or directory
ERROR: Encountered errors while bringing up the project.

但是,如果我在主机中手动创建文件夹node_modules,它就可以正常工作。有人可以告诉我问题是什么吗?

node.js docker docker-compose node-modules volume
1个回答
0
投票

我通过更改

docker-compose.yml
文件卷并将其重定向到整个项目来解决问题。

更新后的文件是:

version: "3.4"

services:
  node:
    build:
      context: ..
      dockerfile: ./docker/node/Dockerfile
    container_name: node
    ports:
      - "8000:8000"
    volumes:
      - app:/srv/app
volumes:
  app:
    driver: local
    driver_opts:
      type: "none"
      o: "bind"
      device: ".."
© www.soinside.com 2019 - 2024. All rights reserved.