我正在使用VS Code的功能为我的服务创建开发容器。使用以下布局,我定义了一个单独的服务(目前只有一个)。我想在配置容器以侦听http请求后自动运行我的node项目,但还没有找到最好的方法。
我的项目目录
- project-name - .devcontainer.json - package.json (等等) - docker-compose.yaml
现在在我的
请注意,根据VS Code文档的要求,我需要将
我已经添加了一个
我的项目目录
- project-name - .devcontainer.json - package.json (等等) - docker-compose.yaml
现在在我的
docker-compose.yaml
中,我定义了以下结构:version: '3'
services:
project-name:
image: node:14
command: /bin/sh -c "while sleep 1000; do :; done"
ports:
- 4001:4001
restart: always
volumes:
- ./:/workspace:cached
请注意,根据VS Code文档的要求,我需要将
/bin/sh -c "while sleep 1000; do :; done"
作为服务command
,这样服务就不会关闭。
在我的.devcontainer.json
文件中:
{
"name": "My Project",
"dockerComposeFile": [
"../docker-compose.yaml"
],
"service": "project-name",
"shutdownAction": "none",
"postCreateCommand": "npm install",
"postStartCommand": "npm run dev" // this causes the project to hang while configuring?
"workspaceFolder": "/workspace/project-name"
}
我已经添加了一个
postCreateCommand
来安装依赖项,但我还需要运行npm run dev
以使我的服务器监听请求。然而,如果我将此命令添加到postStartCommand
中,项目会构建和运行,但它在技术上会停留在Configuring Dev Server
(在VS Code底部有一个旋转器),因为这启动了我的服务器,脚本没有“退出”,所以我觉得应该有更好的方法在容器设置后触发服务器运行?