I am trying to create a node.js docker container for an api layer transpiled from typescript copied from a scr folder to a dist folder. The node.js container seems to exit immediately and when I issue docker-compose logs I get "Error: Cannot find module '/usr/src/app/webapp.js'", however, when I bring up the container with the -d option, I can see where the file and directory structure is in the correct hierarchical structure. What could be wrong here? Why is node not able to locate the webapp.js file?
Dockerfile:
FROM node:latest
# install our dependencies and nodejs
RUN mkdir -p /usr/src
RUN mkdir -p /tmp/dist
ADD Account/package.json /tmp/package.json
RUN cd /tmp && npm install --production
ADD Account/dist /tmp/dist
RUN mkdir -p /tmp/node_modules/mongodb-repository
ADD Account/node_modules/mongodb-repository /tmp/node_modules/mongodb-repository
RUN mkdir -p /usr/src/app && cp -a /tmp/node_modules /usr/src/app && cp -a /tmp/package-lock.json /usr/src/app
RUN cp -a /tmp/dist/application /usr/src/app && cp -a /tmp/dist/config /usr/src/app && cp -a /tmp/dist/domain /usr/src/app && cp -a /tmp/dist/infrastructure /usr/src/app
RUN cp -a /tmp/dist/routes /usr/src/app && cp -a /tmp/dist/types /usr/src/app && cp -a /tmp/dist/webapp.js /usr/src/app && cp -a /tmp/package.json /usr/src/app
RUN chmod 755 /usr/src/app/webapp.js
RUN mkdir -p /usr/src/app/bin
COPY Account/bin /usr/src/app/bin
COPY Account/.env /usr/src/app/.env
WORKDIR /usr/src/app
CMD [ "node", "webapp.js" ]
EXPOSE 3000
docker-compose.yml
version: '2'
services:
mongo:
container_name: "app_mongo"
tty: true
image: mongo:latest
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
- MONGO_INITDB_ROOT_USERNAME=********
- MONGO_INITDB_ROOT_PASSWORD=********
volumes:
- /data/dbDocker:/data/db
ports:
- 27017:27017
command: "mongod --smallfiles --auth"
rabbitmq:
container_name: "app_rabbitmq"
tty: true
image: rabbitmq:management
ports:
- "15672:15672"
- "15671:15671"
- "5672:5672"
volumes:
- /rabbitmq/lib:/var/lib/rabbitmq
- /rabbitmq/log:/var/log/rabbitmq
- /rabbitmq/conf:/etc/rabbitmq/
group:
container_name: "app_group"
build:
context: .
dockerfile: ./Account/Dockerfile
volumes:
- ./Account:/usr/src/app/
ports:
- "3000:3000"
depends_on:
- mongo
- rabbitmq