我的当前项目目录如下所示:
.
??? backend
? ??? Dockerfile # NestJS Dockerfile.
? ??? docker # Folder that contains docker-compose.yml file.
? ??? package.json
? ??? src
??? frontend
??? Dockerfile # Angular Dockerfile.
??? package.json
??? src
Run Code Online (Sandbox Code Playgroud)
我的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:
Run Code Online (Sandbox Code Playgroud)
我想使用 Docker 并且不会失去使用 WebStorm 作为 IDE 的好处。例如,它告诉我未安装 tslint 包,我需要运行npm install才能安装该node_modules文件夹。但是,我的node_modules文件夹仅存在于容器中。有什么方法可以让 WebStorm 正常工作吗?
我知道有一种叫做路径映射的东西,我已经尝试配置它,但没有任何反应;它仍然告诉我安装软件包。
这是我到目前为止所做的:
当我运行时docker-compose up,一切运行顺利。当我尝试添加运行配置Run > Edit Configurations...以添加 (+)Docker-compose运行并将其指向docker-compose.yml文件时,它也能顺利运行。
我希望完成的是在 Docker 中使用 IDE 的功能。目前,它不知道去哪里寻找tslint配置,或者node_modules.
太长了;
技巧是将 docker 容器内的路径从 更新/your-path为/opt/project。
详细解决方案
webstorm 的问题是它们不允许您定义可以选择的路径node_modules。但他们有一个默认路径可供选择。当我想为 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
Run Code Online (Sandbox Code Playgroud)
现在,这不会检测用于远程调试的 node_modules 或 webstorm 中所需的任何其他集成。
但是如果你将 dockerfile 更新为这样的
# 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
Run Code Online (Sandbox Code Playgroud)
然后网络风暴就能够按预期检测到一切。
/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
Run Code Online (Sandbox Code Playgroud)
您可以在我的博客中阅读更多相关信息
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |