#docker #docker-compose #dockerfile
Вопрос:
Моя структура папок выглядит следующим образом
project/
-backend/
Dockerfile
package.json
- docker-compose.yml
Мой док-файл выглядит так
FROM node:14-alpine as base
WORKDIR /src
COPY ./package*.json /src
EXPOSE 3000
FROM base as dev
ENV NODE_ENV=development
RUN npm install -g nodemon amp;amp; npm install
COPY . /
CMD ["npm run start:dev"]
просто простой док-файл, ничего сумасшедшего
и мой докер-сочиняй, как
version: '3'
services:
web:
build:
context: ./backend
target: dev
volumes:
- .:/src
command: npm run start:dev
ports:
- "3000:3000"
environment:
NODE_ENV: development
DEBUG: nodejs-docker-express:*
Когда я делаю докер-сочиняю, появляется ошибка, говорящая
web_1 | npm ERR! code ENOENT
web_1 | npm ERR! syscall open
web_1 | npm ERR! path /src/package.json
web_1 | npm ERR! errno -2
web_1 | npm ERR! enoent ENOENT: no such file or directory, open '/src/package.json'
web_1 | npm ERR! enoent This is related to npm not being able to find a file.
web_1 | npm ERR! enoent
web_1 |
web_1 | npm ERR! A complete log of this run can be found in:
web_1 | npm ERR! /root/.npm/_logs/2021-05-22T20_54_52_629Z-debug.log
Это означает, что package.json не был скопирован, я знаю.
Но чего я не знаю, так это как это исправить.
Я думаю, что ошибка в файле dockerfile, но я не смог ее исправить
может ли кто-нибудь сказать мне, что я делаю не так?
Комментарии:
1.
volumes:
Директива заменяет все, что файл Dockerfile встроен в образ, содержимым из хост-системы, включаяpackage.json
файл. Улучшает ли удаление этогоvolumes:
блока ситуацию? Вы получаете ошибку при создании образа (работает лиdocker-compose build
он сам по себе?) или при его запуске?2. Я получил ошибку при запуске
docker compose up
3. ты подал мне идею. в томах я добавляю «тома: — ./серверная часть:/src», и это работает, спасибо
Ответ №1:
Попробуйте отредактировать свою композицию docker, у вас есть проблема в ваших томах, которая заключается в копировании каталога проекта отверстия.
заменять
volumes:
- .:/src
с
volumes:
- ./backend:/src