#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.