我正在努力解决一个问题,即应该在运行 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,它就可以正常工作。有人可以告诉我问题是什么吗?
我通过更改
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: ".."