Running Typescript nodes application in Docker

Viewed 39

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
    • node_modules
    • src
    • Dockerfile
    • docker-compose.yml
    • tsconfig.json
0 Answers
Related