Запустить два docker контейнера из подкаталога не находит файл конфигурации - PullRequest
0 голосов
/ 17 марта 2020

Я хотел бы запустить два docker контейнера через docker -compose.

Имеется следующая структура проекта:

|- service
   |- docker-compose
   |- DockerFile
   |- config.yaml

|- client
   |- docker-compose
   |- DockerFile

Я пытаюсь запустить два контейнера через следующая команда:

$ docker-compose -f ./client/docker-compose.yml -f ./service/docker-compose.yml up

Кажется, все работает нормально, за исключением одного сообщения об ошибке:

{"action":"startup","error":"config file 'config.yaml' not found.","level":"error","msg":"could not load config","time":"2020-03-17T15:17:19Z"}

Но когда я захожу в каждый каталог и запускаю их отдельно, все работает просто отлично , Таким образом, кажется, что файл конфигурации, указанный в томе , каким-то образом не найден.

docker -компонентный файл:

. / service / docker -compose.yml

services:
  thing:
    command:
    - --host
    - 0.0.0.0
    - --port
    - '8080'
    - --scheme
    - http
    - --config-file
    - config.yaml
   ports:
    - 8080:8080
   volumes:
    - ./config.yaml:/config.yaml
  web:
    build: .
    environment:
    - web_host=http://my-site.com:8080
    depends_on:
    - anotherThing
    links: thing:thing.com
version: '3.4'

Сам файл конфигурации содержит произвольную информацию:

---
authentication:
  my_arbitrary_key:
    enabled: true

Любая идея, как убедиться, что файл конфигурации найден при запуске docker - составить из подкаталога? Или я неправильно использую команду docker -compose ...


Обновление

Интересно, что если я поменяю местами файлы в команде docker -compose, я получу, что это не так t run.

Поэтому, когда я использую:

$ docker-compose -f ./service/docker-compose.yml -f ./client/docker-compose.yml up

Docker не запускается, и ошибка:

Cannot create container for service thing: invalid volume specification: '/Users/user/Site/service/config.yaml:config.yaml:rw': invalid mount config for type "bind": invalid mount path: 'config.yaml' mount path must be absolute

1 Ответ

0 голосов
/ 17 марта 2020

Он ищет файл конфигурации во внешнем каталоге, вы можете использовать абсолютный путь или поместить его в какой-нибудь файл .env

Лучше всего будет использовать один docker -композитный файл, который может иметь относительный путь другого папка

Краткая справка: Docker -compose - это утилита для запуска нескольких контейнеров docker, называемых сервисами, - Compose - инструмент для определения и запуска мультиконтейнерных Docker приложений. С Compose вы используете файл YAML для настройки служб вашего приложения. Затем с помощью одной команды вы создаете и запускаете все службы из вашей конфигурации. Чтобы узнать больше обо всех функциях Compose, см. Список функций.

Следовательно, здесь нет необходимости иметь два docker -compose файла, у нас должен быть один, который запустит обе службы, также вы можете пользователь docker - при необходимости запустите одну службу

Более подробную информацию можно найти по адресу - https://docs.docker.com/compose/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...