Docker составить не могу найти пакет. json в пути - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь докернизировать приложение моего узла, но не могу понять, почему оно не может найти пакет. Файл json, потому что файл пакета. json находится по тому же пути, что и docker составить и докерфайл. Вот структура папок:

enter image description here

Ниже приведен файл Docker:

Файл Docker

FROM node:12

# RUN mkdir -p ./usr/src/app/
COPY . /usr/src/app/

WORKDIR /usr/src/app/

# ADD package.json /usr/src/app/package.json
COPY package*.json ./

RUN yarn
RUN yarn global add pm2

COPY . .

EXPOSE 3005
EXPOSE 9200

CMD yarn start:dev

И файл составления docker:

docker -compose.yml

version: "3.6"
services:
  api:
    image: node:12.13.0-alpine
    container_name: cont
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 3005:3005
    environment:
      - JWT_TOKEN_SECRET=ajsonwebtokensecret
      - MONGO_URI=mongodb://localhost:27017/em
      - PORT=3005
      - MAIL_USER=******
      - MAIL_PASS=******
      - FORGOT_PASS_EMAIL=noreply@em.com
      - CLIENT_SIDE_URL=http://localhost:3001
      - ELASTICSEARCH_URI=http://localhost:9200
   volumes:
      - .:/usr/src/app/
    command: yarn start:dev
    links:
      - elasticsearch
    depends_on:
      - elasticsearch
    networks:
      - esnet
  elasticsearch:
    container_name: em-elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    volumes:
      - esdata:/usr/share/elasticsearch/data
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    logging:
      driver: none
    ports:
      - 9300:9300
      - 9200:9200
    networks:
      - esnet
volumes:
  esdata:
networks:
  esnet:

Когда я пытаюсь запустить docker compose up, я получаю эта ошибка

продолжение | бег пряжи v1.19.1

продолжение | ошибка Не удалось найти пакет. json файл в "/"

cont | info Посетите https://yarnpkg.com/en/docs/cli/run для получения документации об этой команде.

продолжение завершено с кодом 1

Я пробовал это , но все Решения, которые я пробовал, не работают. У кого-нибудь есть решение этого?

1 Ответ

0 голосов
/ 18 февраля 2020

Относительный путь. Обратите внимание, что рабочая команда COPY COPY . .. . там означает «текущий каталог». Итак, что вам нужно:

COPY ./package*.json ./

Вы упростили бы отладку, запустив docker build -t scratch ., чтобы исключить docker -композицию из уравнения. Всегда сводите его к абсолютному минимальному воспроизводителю, чтобы изолировать точную проблему.

...