【发布时间】:2021-07-23 05:25:22
【问题描述】:
我有一个问题,当我们使用 React/Next.js 时,为什么我们需要在 docker-compose 中使用 VOLUME 选项?
如果我理解的话,我们使用VOLUME 来“保存数据”,例如当我们使用数据库时。
但是对于React/Next.js,我们只是用来传递node_modules 和app path,对我来说这没有任何意义...
如果我这样说:
version: '3'
services:
nextjs-ui:
build:
context: ./
ports:
- "3000:3000"
container_name: nextjs-ui
volumes:
- ./:/usr/src/app/
- /usr/src/app/node_modules
有效..
如果我这样说:
version: '3'
services:
nextjs-ui:
build:
context: ./
ports:
- "3000:3000"
container_name: nextjs-ui
以同样的方式工作..
为什么我们需要保存node_modules和app path?
我的 DOCKERFILE:
FROM node:12-alpine
WORKDIR /app
COPY package*.json ./
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001
COPY . .
EXPOSE 9000
RUN npm run build
CMD ["npm", "start"]
【问题讨论】:
-
需要看到你的
Dockerfile来回答这个问题。通常我们构建 reactjs 应用,并且只在 docker 镜像中包含构建输出。 -
@ImeshaSudasingha Hiii,很好,我更新了,我放了 dockerfile,谢谢
-
这些
volumes:声明不是必需的,可以安全地删除。它们可能会导致问题,例如在生产中运行未经测试的代码或 Docker 忽略对您的package.json文件的更改。您可以使用主机节点环境进行日常开发,并在尝试使单元测试正常工作时实时重新加载,然后将工作应用程序打包到 Docker 中以进行集成测试和部署。
标签: reactjs docker docker-compose next.js