#reactjs #docker #docker-compose #frontend #backend
Вопрос:
У меня проблема с путями docker-compose
, когда я пытаюсь построить проект только с docker build
помощью , он отлично работает, но я не должен использовать docker build
, я должен использовать docker-compose
. Когда я использую docker-compose
его, он возвращает 2 ОШИБКИ на шаге 3/5 => ERROR [3/5] COPY /app/package.json .
и на шаге 5/5 => ERROR [5/5] COPY /app .
:
PS C:UsersmambaDesktopproject-practice> docker-compose -f docker/docker-compose.yml up -d
[ ] Building 1.4s (9/9) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 31B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 34B 0.0s
=> [internal] load metadata for docker.io/library/node:latest 1.0s
=> [1/5] FROM docker.io/library/node@sha256:c3356b2b11ad643852a321308c15d70ca2bc106e40d3ffe7a4879d3588a9d479 0.0s
=> [internal] load build context 0.1s
=> => transferring context: 2B 0.0s
=> CACHED [2/5] WORKDIR /app 0.0s
=> ERROR [3/5] COPY /app/package.json . 0.0s
=> CACHED [4/5] RUN npm install 0.0s
=> ERROR [5/5] COPY /app . 0.0s
------
> [3/5] COPY /app/package.json .:
------
------
> [5/5] COPY /app .:
------
failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/app/package.json" not found: not found
это моя структура проекта
http://skrinshoter.ru/s/080721/upY64zwf
это мой док-файл
FROM node
WORKDIR /app
COPY /app/package.json .
RUN npm install
COPY /app .
EXPOSE 3000
CMD ["npm", "start"]
это мой докер-compose.yml
version: "3.8"
services:
react-app:
working_dir: /app
build:
dockerfile: Dockerfile
ports:
- "3000:3000"
volumes:
- ./app/src:/app/src
environment:
- CHOKIDAR_USEPOLLING=true
# env_file:
# - ./docker/.env
Если я перемещу docker-compose.yml в верхнюю часть структуры файлов project-practice
, он отлично работает, он строится и запускается сервер, но я должен сохранить структуру папок и файлов, подобную этой.
|-project-practice
|-app
| |...
|-docker
|...
Ответ №1:
Похоже, вы неправильно монтируете тома. Измените конфигурацию docker-compose с:
build:
dockerfile: Dockerfile
volumes:
- ./app/src:/app/src
Вы устанавливаете только папку SRC, но вам нужны файлы за ее пределами. Также вам необходимо добавить контекст в ваш файл docker
Для:
build:
context: ../
dockerfile: /docker/Dockerfile
volumes:
- ../app:/app
Путь должен быть относительно расположения файла docker-compose.
Также вам необходимо изменить файл Dockerfile:
FROM node
WORKDIR /app
COPY /app/package.json .
RUN npm install
COPY /app .
EXPOSE 3000
CMD ["npm", "start"]
Комментарии:
1. Я старался делать, как вы говорите, но у нее все равно те же проблемы :((
2. только теперь это изменилось
failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/app" not found: not found
3. но
=> ERROR [3/5] COPY /app/package.json .
и=> ERROR [5/5] COPY /app .
не изменилось 🙁4. Да, понял. Вам нужно изменить файл настройки.
COPY ../app/package.json .
иCOPY ../app .
5. в любом случае, :((( не работает, то же самое(
=> ERROR [3/5] COPY ../app/package.json .
и=> ERROR [5/5] COPY ../app .
иfailed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/app/package.json" not found: not found
: ((((((
Ответ №2:
Поэтому, если ваш yml вложен, вам нужно использовать ../app/src:/app/src
его, а не ./app/src:/app/src
так, как он расположен относительно yml.
Комментарии:
1. Я пытался поступить так, как вы говорите, и это не помогает 🙁 Что я делаю не так?