ОШИБКА копирования: при настройке docker-compose up исходные файлы не были указаны

#node.js #docker #express #docker-compose #dockerfile

#node.js #docker #экспресс #docker-compose #докерфайл

Вопрос:

Dockerfile для express API похож на это:

 FROM node:10.15.3

MAINTAINER AshishkrGoyal <ashish.goyal@algoscale.com>

#RUN mkdir -p /usr/src/app

#define working dir
WORKDIR /usr/src/app

#available package.json, package-lock.json as well
COPY package*.json ./

#install all dependencies listed in package.json
RUN npm install

#copy all the source code to working dir
COPY . .

#mapping of port to docker daemon
EXPOSE 3000

#command in the form of array
CMD ["npm", "run", "dev"]


 

docker-compose.yml выглядит так, как показано ниже:

 #specify the docker-compose version
version: '3.0'

services:
#specify all the services 
  angular: #it is frontend service container name
    build: public #dockerfile directory
    ports:
      - "4200:4200"

  express: #it is backend service container name
    build: server #dockerfile directory
    ports:
      - "3000:3000"
    links:
      - database

  database: #it is elastc search service container name
    image: docker.elastic.co/elasticsearch/elasticsearch:7.0.0
    ports:
        - "9200:9200"
 

При выполнении команды docker-compose up я получаю следующую ошибку:
ОШИБКА: службе ‘express’ не удалось выполнить сборку: ошибка копирования: исходные файлы не были указаны

Пожалуйста, помогите мне решить эту ошибку.

Заранее спасибо!!

Комментарии:

1. Он скопирует весь код в рабочий каталог, как в моем случае, это /usr/src/app

2. Есть ли совпадение файлов package*.json в каталоге сервера? Есть ли у вас .dockerignore файл, и если да, то каково его содержимое? Можете ли вы показать весь вывод сборки до сбоя, чтобы мы могли видеть, какой шаг не выполняется, поскольку у вас есть две команды КОПИРОВАНИЯ?

3. @SherloxFR источником копирования является контекст сборки, местом назначения — изображение, поэтому каждое . из них предназначено для другого местоположения.

Ответ №1:

пожалуйста, проверьте, не проигнорировал ли ваш .gitignore файл ваш исходный файл.

Ответ №2:

 #copy all the source code to working dir
COPY . .
 

Это скопирует текущий каталог хоста как часть процесса создания образа. Выполняется docker-compose up ... из корня экспресс-проекта? В противном случае файлы Express projects не были бы найдены при создании образа.

Комментарии:

1. Да, я запускаю docker-compose up из корня проекта

2. Идеальный. Проверьте конфигурацию ‘build context’ в docker-compose. docs.docker.com/compose/compose-file Для Express укажите имя вложенного каталога, которое является «корнем» проекта Express внутри общего проекта docker.