Я использую Typescript здесь и использую node:latest
в Docker, и я также использую docker-compose
, мне всегда не удавалось запустить его с docker -compose, когда я запускаю docker run
(вручную) это было хорошо,
вот мой Dockerfile
FROM node:latest
RUN mkdir -p /home/myapp
WORKDIR /home/myapp
RUN npm i -g prisma2
ENV PATH /home/myapp/node_modules/.bin:$PATH
COPY package.json /home/myapp/
RUN npm install
COPY . /home/myapp
RUN prisma2 lift save --name 'init'
RUN prisma2 lift up
EXPOSE 8100
RUN npm run build
RUN pwd
RUN ls
RUN ls dist
CMD node dist/server.js
и мой docker-compose.yml
:
version: "3"
services:
app:
environment:
DB_URI: postgres://myuser:password@postgres:5555/prod
NODE_ENV: production
build:
context: .
dockerfile: Dockerfile
depends_on:
- postgres
volumes:
- ./home/edupro/:/home/myapp/
- ./node_modules:/home/myapp/node_modules
ports:
- "8100:8100"
postgres:
container_name: postgres
image: postgres:10-alpine
ports:
- "5555:5555"
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: password
POSTGRES_DB: prod
, когда он заканчивает делать CMD node /dist/server.js
( какую папку я создаю, потому что я использую TYpescript), появляется сообщение об ошибке: Cannot find module '/home/edupro/dist/server.js'
Я должен попытаться изменить volumes
в docker-compose.yml
, а также вот так:
- /home/myapp/node_modules:/home/myapp/node_modules
или
- ./:/home/myapp/node_modules
но все так же. я что-то пропустил? или неправильно смонтировал? как правильно решить эту проблему?