docker windows express typescript热重载

avwztpqn  于 2023-05-30  发布在  Windows
关注(0)|答案(1)|浏览(183)

我正在尝试为我的应用程序创建一个scaffold,它基本上是用node express和graphql进行dockerized的。
hot-reload在本地(没有docker)上运行,但在dockerized版本上失败。
这是我的代码。

TSCONFIG

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "rootDir":"./src",
    "outDir": "./dist",
    "strict": true,
    "esModuleInterop": true
  },
  // "include": ["src/**/*"],
  // "exclude": ["node_modules"]
}

package.json

<redacted>
"scripts":{
"start": "ts-node ./src/server.ts",
}
<redacted>

nodemon.json

{
    "ignore": ["**/*.test.ts", "**/*.spec.ts", "node_modules"],
    "watch": ["src"],
    "exec": "npm start",
    "ext": "ts"
  }

dockerfile

FROM node:18

WORKDIR /usr/src/app

COPY nodemon.json ./

COPY tsconfig*.json ./

COPY package*.json ./

RUN npm install -g ts-node

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npx", "nodemon"]

像往常一样,我使用Docker命令构建它。

docker build -t "scaffold:latest" .
docker run -p 3000:3000 -d -v "%cd%":/usr/src/app scaffold

我看到一些线程说我需要使用legacy-watch当使用docker-nodemon-windows堆栈时,我不知道如何在使用nodemon.json时实现它
我尝试在全局安装ts-node,但没有成功。

xxb16uws

xxb16uws1#

我认为对Docker做什么有一点困惑:
1.提供了一个虚拟化环境,在其中运行应用程序
1.提供了一个入口点,即在映像投入执行时需要运行的应用程序(容器)
1.当应用程序停止或重新启动时,容器死亡
我认为在docker容器中不使用像nodemon这样的开发工具是一个很好的做法,我不确定你想实现什么?

相关问题