我正在尝试为我的应用程序创建一个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,但没有成功。
1条答案
按热度按时间xxb16uws1#
我认为对Docker做什么有一点困惑:
1.提供了一个虚拟化环境,在其中运行应用程序
1.提供了一个入口点,即在映像投入执行时需要运行的应用程序(容器)
1.当应用程序停止或重新启动时,容器死亡
我认为在docker容器中不使用像nodemon这样的开发工具是一个很好的做法,我不确定你想实现什么?