如何告诉WebStorm在Docker容器中查找项目?
我的当前项目目录如下所示:如何告诉WebStorm在Docker容器中查找项目?,webstorm,Webstorm,我的当前项目目录如下所示: 。 ├── 后端 │ ├── Dockerfile#NestJS Dockerfile。 │ ├── docker#包含docker-compose.yml文件的文件夹。 │ ├── package.json │ └── src └── 前端 ├── Dockerfile#角度Dockerfile。 ├── package.json └── src 我的docker compose.yml文件如下所示: version: "3.7" services
。
├── 后端
│ ├── Dockerfile#NestJS Dockerfile。
│ ├── docker#包含docker-compose.yml文件的文件夹。
│ ├── package.json
│ └── src
└── 前端
├── Dockerfile#角度Dockerfile。
├── package.json
└── src
我的docker compose.yml
文件如下所示:
version: "3.7"
services:
# ########################
# Back-End Container
# ########################
backend: # Node-Express backend that acts as an API.
container_name: nest_backend
build:
context: ../
restart: always
expose:
- 3000
ports:
- "3000:3000"
volumes:
- /home/node/node_modules
- "../:/home/node/"
# ########################
# Front-End Container
# ########################
frontend: # Angular frontend to be served to client.
container_name: angular_frontend
build:
context: ../../frontend/
restart: always
expose:
- 4200 # Angular ng-serve port.
- 49153 # Websocket port for live reloading.
ports:
- "49153:49153"
- "4200:4200"
volumes:
- /home/node/node_modules
- "../../frontend/:/home/node/"
depends_on:
- backend
networks:
default:
我希望使用Docker,并且不会失去使用WebStorm作为IDE的好处。例如,它告诉我没有安装tslint包,我需要运行npm install
来安装node\u modules
文件夹。但是,我的节点\u模块
文件夹仅存在于容器中。有没有一种方法可以让WebStorm正常工作
我知道有一种叫做路径映射的东西,我试着配置它,但什么也没发生;它仍然告诉我安装软件包
以下是我迄今为止所做的工作:
我遵循了教程:
- 转到窗口右上角调试按钮旁边的编辑配置
- 单击+符号并选择节点.js
- 单击节点解释器旁边的…
- 单击+符号,选择添加远程…
- 从单选按钮中选择Docker Compose,单击配置文件旁边的文件夹图标,并从下拉菜单中选择相应的服务
- 在所有内容上单击“确定”,然后运行它。它将运行,并给出一个未找到命令的错误
docker compose up
时,一切运行都很顺利。当我试图添加运行配置run>Edit Configurations…
以添加(+)一个Docker compose
run,将其指向Docker compose.yml
文件时,它也能顺利工作
我希望在Docker中使用IDE的特性。目前,它不知道在何处查找tslint
配置或node\u模块
TLDR强>
诀窍是将docker容器内的路径从/your path
更新为/opt/project
详细解决方案
webstorm的问题是,它们不允许您定义可以从中拾取节点\u模块的路径。但他们有一个默认路径,从中选择它。当我想为docker内部运行的后端节点服务集成远程调试时,我也面临同样的问题
您需要更新docker文件。假设您使用的Dockerfile是这样的
# pull official base image
FROM node:12.11-buster
# set working directory
WORKDIR /app
COPY ./package.json ./package-lock.json /app
RUN npm install
# pull official base image
FROM node:12.11-buster
# set working directory
# This done particularly for enabling debugging in webstorm.
WORKDIR /opt/project
COPY ./package.json ./package-lock.json ./.npmrc /opt/project
RUN npm install
现在,这将不会检测用于远程调试或webstorm中需要的任何其他集成的node_模块
但是如果您将dockerfile更新为类似的内容
# pull official base image
FROM node:12.11-buster
# set working directory
WORKDIR /app
COPY ./package.json ./package-lock.json /app
RUN npm install
# pull official base image
FROM node:12.11-buster
# set working directory
# This done particularly for enabling debugging in webstorm.
WORKDIR /opt/project
COPY ./package.json ./package-lock.json ./.npmrc /opt/project
RUN npm install
然后webstorm就能够像预期的那样检测到一切
诀窍是将路径从/your path
更新为/opt/project
docker compose文件应如下所示:
version: "3.7"
services:
backend-service:
build:
dockerfile: ./Dockerfile.local
context: ./
command: nodemon app.js
volumes:
- ./:/opt/project
- /opt/project/node_modules/
ports:
- 6060:6060
你可以在中了解更多关于这一点的信息。你在yaharga找到解决方案了吗?还没有。如果你找到解决办法,请告诉我。我最后做的是编写一个入口点脚本,在项目中安装节点模块,然后分别为每个文件夹挂载一个卷,这样节点模块就不会干扰卷挂载(挂载时它会变空的问题)。是的,我找到了一个解决我搜索的问题的方法。这与你正在做的有点不同,但它应该在@yaharga中起同样的作用