Переход к контексту dockerfile / docker -compose - PullRequest
0 голосов
/ 20 июня 2020

Моя текущая структура проектов выглядит примерно так:

/home/some/project
│   .credentials_dev
│   .credentials_prod
│   ca.cer
│   docker-compose.yml
│   Dockerfile
│   init.sql
│   nginx_dev.conf
│   nginx_prod.conf
│
├───src
└───users

Compose состоит из четырех контейнеров, два из которых являются dev и prod версией приложения, которое использует соответствующие файлы prod и dev. Как видите, следующая структура root немного перегружена, поэтому я хотел бы переместить весь персонал по развертыванию в отдельный каталог, чтобы сделать следующее:

/home/some/project
├───deployment
│       .credentials_dev
│       .credentials_prod
│       ca.cer
│       docker-compose.yml
│       Dockerfile
│       init.sql
│       nginx_dev.conf
│       nginx_prod.conf
│
├───src
└───users

Идея состоит в том, чтобы получить в приведите следующую структуру на хосте docker:

host
├───dev
│   ├───src
│   └───users
├───prod
│   ├───src
│   └───users
└───project
    ├───deployment
    │       .credentials_dev
    │       .credentials_prod
    │       ca.cer
    │       docker-compose.yml
    │       Dockerfile
    │       init.sql
    │       nginx_dev.conf
    │       nginx_prod.conf
    │
    ├───src
    └───users

и два контейнера app_dev и app_prod, чьи тома необходимо смонтировать в папки / host / dev и /host/prod.

I попробовали несколько решений, найденных здесь, но все они в разных вариантах вернули следующие ошибки:

ERROR: Service 'app_dev' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder264200969/ca.cer: no such file or directory
ERROR: Service 'app_dev' failed to build: COPY failed: Forbidden path outside the build context: ../ca.cer ()

Ошибка всегда появляется, когда docker -compose пытается создать изображение в этой строке :

COPY deployment/ca.cer /code/

Подскажите, пожалуйста, как добиться желаемого результата.

1 Ответ

0 голосов
/ 20 июня 2020

Папка развертывания находится вне контекста сборки. Docker передаст все файлы внутри файла развертывания в качестве контекста сборки. Однако сама папка развертывания находится за ее пределами.

Вместо этого измените оператор копирования:

COPY ./ca.cer /code/

Поскольку на изображении вы уже находитесь в этой папке.

...