当我的笔记本电脑node_modules
上有file system
时,在容器中本地开发应用的正确方法是什么。
目前,我在settings
Dockerfile
COPY package.json /app/
RUN npm install
COPY . /app/
以下docker-compose
volumes:
- "/app/node_modules"
在这种情况下,我可以在容器中运行npm
命令,package.json
中的更改会反映在我的本地源代码树中。这很好。但缺少一件事:我没有本地node_modules
文件夹,这意味着我的IDE
无法看到这些文件。
有可能以某种方式修复吗?
答案 0 :(得分:1)
您可以将所有本地环境复制到容器中:
COPY ./package.json /app/package.json
WORKDIR /app/
RUN npm install
COPY ./src/ /app/src/
CMD ["npm","run","start"]
这种方法会将您的本地环境复制到图像中。每当您对源进行更改时,您都必须重建映像并重新启动容器。
我建议您将项目文件夹作为卷安装到容器中 - 包含所有依赖项,并且源/依赖项中的每个更改都需要重新启动容器(或者您可以在容器内使用管理程序):
VOLUME /app/
WORKDIR /app/
CMD ["npm","run","start"]
运行容器时 - 记得将项目目录连接到容器:
docker-compose.yml
文件
version: '2'
services:
app:
build: .
image: app
volumes: [".:/app/"]
(我假设您的Node.js应用的Dockerfile
与来源位于同一目录中,node_modules
和docker-compose.yml
)
编辑:上面发布的解决方案有利于本地开发。如果您想要停靠和部署应用程序,有两种方法:
将您的本地node_modules
和所有来源复制到容器中
COPY ./node_modules /app/
COPY ./src /app/
COPY ./package.json /app/
WORKDIR /app/
CMD ["npm","run","start"]
或者使用我的答案顶部的模板(它将在构建期间安装所有node_modules - 当package.json
更改时)此构建速度会慢一些。