docker не могу найти файл для запуска приложения после сборки - PullRequest
0 голосов
/ 21 января 2020

Я использую 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

но все так же. я что-то пропустил? или неправильно смонтировал? как правильно решить эту проблему?

1 Ответ

1 голос
/ 21 января 2020

вам нужно удалить разделы тома из вашей композиции, так как это перезапишет все файлы, которые вы создаете в вашем файле Docker, поэтому удалите это:

volumes:
      - ./home/edupro/:/home/myapp/
      - ./node_modules:/home/myapp/node_modules
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...