Докер не может найти package.json - PullRequest
1 голос
/ 04 апреля 2019

Я недавно начал запускать postgres из контейнера докера и перенес свой бэкэнд в отдельный контейнер. Вот мой файл docker-compose.yml

version: "3.7"
services:
   postgres:
      image: postgres:9.6-alpine
      ports:
         - "5432"
      volumes:
         - postgres_data:/var/lib/postgresql/data

   backend:
      build:
         context: ./
         dockerfile: Dockerfile
      volumes:
          - ../../:/var/www
      ports:
          - "3000:3000"
      links:
          - postgres
      restart: always
      environment:
         - PORT=3000
         - HOST=0.0.0.0
         - PG_HOST=postgres
         - PG_USER=postgres
         - PG_DATABASE=postgres
         - NODE_ENV=development

  volumes:
      postgres_data:

А вот и мой Dockerfile

FROM alpine:3.8

RUN apk add -U python g++ yarn nodejs npm make 
WORKDIR /var/www/server

COPY package*.json ./
RUN npm install

COPY . .
RUN pwd
RUN ls -l

EXPOSE 3000

CMD ["npm", "start"]

А мой Makefile выглядит так

build: docker-compose.yml
   docker-compose build
   touch build

dev: build
   docker-compose up

И структура моего проекта выглядит так

server
├── app
│   ├── db
│   └── models
├── build
├── docker-compose.yml
├── Dockerfile
├── index.js
├── Makefile
├── package.json
├── package-lock.json
└── README.md

Итак, я запускаю make dev, чтобы создать докер-контейнер, и когда я фактически поднимаю докер-контейнер, я получаю сообщение об ошибке

npm ERR! path /var/www/server/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/var/www/server/package.json'

Однако вывод моего ls -l в каталоге проекта в контейнере Docker:

-rwxrwxrwx    1 root     root           205 Apr  4 16:39 Dockerfile
-rwxrwxrwx    1 root     root            96 Apr  4 06:19 Makefile
-rwxrwxrwx    1 root     root           216 Apr  4 04:10 README.md
drwxrwxrwx    4 root     root          4096 Apr  4 16:36 app
-rwxrwxrwx    1 root     root             0 Apr  4 16:38 build
-rwxrwxrwx    1 root     root           561 Apr  4 16:39 docker-compose.yml
-rwxrwxrwx    1 root     root           205 Apr  4 16:36 index.js
drwxrwxrwx  176 root     root          4096 Apr  4 04:32 node_modules
-rwxrwxrwx    1 root     root         24143 Apr  4 04:28 package-lock.json
-rwxrwxrwx    1 root     root           676 Apr  4 16:36 package.json

и package.json там. Я также попытался настроить CMD на использование только узла index.js в Dockerfile, но это тоже не сработало, сказав, что index.js не удалось найти, что наводит меня на мысль, что я могу оказаться не в нужном каталоге ( ?).

...