@EVOSandru6

Как выполнить COPY файла в Dockerfile из соседних папок?

Добрый день,

Есть структура:

- app
- docker/containers/parser/Dockerfile
- docker-compose.yml

docker-compose.yml

version: '3.7'
services:
parser:
      build: ./docker/containers/parser
      volumes:
          - ./app:/var/www
      working_dir: /var/www
      restart: always
      tty: true


В Dockerfile пытаюсь скопировать файл:

FROM node:11-slim

WORKDIR /var/www

COPY ../../app/package.json .

...


Ловлю:

Step 3/9 : COPY ../../app/package.json .
ERROR: Service 'parser' failed to build: COPY failed: Forbidden path outside the build context: ../../app/package.json ()
Makefile:83: recipe for target 'docker-build' failed


Насколько я понял, мне нужно каким то образом заюзать контекст папки app

Пытался так:

build:
        context: ./app
        dockerfile: ./docker/containers/parser/Dockerfile


На что получаю :

ERROR: Cannot locate specified Dockerfile: ./docker/containers/parser/Dockerfile

Как правильно заюзать контекст папки app? Чтобы можно было копировать файл таким образом (не перемещая Dockerfile)

COPY package.json .
# или COPY ./package.json .


?
  • Вопрос задан
  • 6145 просмотров
Решения вопроса 1
alexanderbulatov
@alexanderbulatov
Fullstack разработчик
Нужно указать контекст для Dockerfile.

И указать сам файл Dockerfile.

Пример, как это может быть:

docker-compose.yml
version: '2'

services:
    nginx:
        build:
            context:  .
            dockerfile:  ./images/nginx/Dockerfile


./images/nginx/Dockerfile
FROM nginx:latest

COPY ["domains/docker.test", "/var/www/docker-bar.test"]


При чём в команде COPY в таком случае нужно исоходить из того, что мы указываем директорию копирования не из того места, где находится файл Dockerfile, а от туда где указана директория в параметре context в файле docker-compose.yml.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
build:
context: ./docker/containers/parser/
dockerfile: Dockerfile

а package.json положите там где вы контекст указали - в ./docker/containers/parser/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы