I have a TS application where I am trying to use docker to work on. I have my application running locally. I have added Docker file and docker-compose but I run into this error when running docker-compose up.
Attaching to delivery-service delivery-service | yarn run v1.22.10 delivery-service | $ node ./dist/server delivery-service | internal/modules/cjs/loader.js:638 delivery-service | throw err; delivery-service | ^ delivery-service | delivery-service | Error: Cannot find module '/app/dist/server' delivery-service | at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) delivery-service | at Function.Module._load (internal/modules/cjs/loader.js:562:25) delivery-service | at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) delivery-service | at startup (internal/bootstrap/node.js:283:19) delivery-service |
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) delivery-service | error Command failed with exit code 1. delivery-service | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
This is my docker file and my docker compose
FROM mhart/alpine-node:10 as Base
WORKDIR /delivery-service
COPY package.json yarn.lock ./
RUN apk add --no-cache make gcc g++ python
RUN yarn
COPY . .
RUN yarn build:tsc
FROM mhart/alpine-node:10
WORKDIR /delivery-service
COPY --from=Base /delivery-service .
CMD [ "yarn", "start" ]
Docker compose
version: "3"
services:
delivery-service:
build:
dockerfile: Dockerfile
context: .
container_name: delivery-service
ports:
- "3006:3006"
restart: always
environment:
PORT: 3006
WORKER_PORT: 3011
NODE_ENV: development
MONGODB_URL: mongodb+srv://xxx:xxx@xxxxxx.mongodb.net/yyyy?retryWrites=true&w=majority
AMQP_URL: amqps://ccccc:xxxxx@abcc.rmq.cloudamqp.com/ttttt
My Package JSON
{ "name": "delivery-service", "version": "1.0.0", "license": "MIT", "description": "Blah blah.", "scripts": { "start": "node ./dist/server", "start:worker": "node ./dist/server/workers/index", "start:dev": "nodemon ./dist/server | bunyan", "start:debug": "nodemon --inspect ./dist/server | bunyan", "watch:tsc": "tsc --watch -p ./tsconfig.json", "build:tsc": "tsc -p ./tsconfig.json", ...........
and my TS config
{
"compilerOptions": {
"target": "ES2017",
"module": "commonjs",
"lib": ["es2017", "esnext.asynciterable", "dom"],
"sourceMap": true,
"outDir": "./dist",
"rootDir": "./src",
"strict": false,
"noImplicitAny": false,
"noUnusedLocals": true,
"moduleResolution": "node",
"baseUrl": "./src",
"paths": {
"@app/common/*": ["common/*"],
"@app/data/*": ["data/*"],
"@app/server/*": ["server/*"]
},
"typeRoots": ["./node_modules/@types", "./typings"],
"types": ["reflect-metadata", "node", "jest"],
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"exclude": ["src/**/*.spec.ts"],
"include": ["typings/**/*.d.ts", "src/**/*"]
}
folder hierarchy is
- Main Folder
- dist
- server
- app.js
- server
- node_modules
- src
- Dockerfile
- docker-compose.yml
- tsconfig.json
- dist