2016-02-29 2 views
2

я работаю с Докер и у меня есть веб-приложение, которое требует следующее:Dockerfile для нескольких контейнеров Docker

  1. Tomcat
  2. PostgresSQL
  3. MongoDB

Чтобы установить пункт 2 и 3 Я делаю следующее:

Я могу запустить команду для PostgresSQL, например:

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres 

Для MongoDB я бегу:

docker run --name some-mongo -d mongo 

Для Tomcat, у меня есть Dockerfile с Tomcat и скопировать мою войну в папку приложений. Я создаю изображение с помощью Docker и запускаю его.

Мой вопрос в том, есть ли лучший способ координировать это шаг за шагом через отдельный скрипт? Решение Docker для этого решения?

благодаря

+2

'docker-compose' предназначен для такого рода ситуаций. Вы должны попробовать и посмотреть, соответствует ли она вашим потребностям. – larsks

ответ

2

В основном докеры-составы - это всего лишь реализация файла yaml для запуска докеров. Поскольку у docker run есть аргументы, переданные ему, эти точные аргументы оговорены в docker compose в формате yaml, а не в командной строке. Docker compose поддерживает несколько контейнеров.

Docker compose имеет несколько других приятных функций, таких как журналы для записи в докере, эта команда дает журналы всех контейнеров, запущенных с помощью компоновки.

7

Dockerfile рецепт для создания образа, который является шаблоном для запуска контейнеров. Чтобы описать систему, состоящую из нескольких контейнеров с использованием стандартизованных изображений, вы должны использовать docker-compose, а не новый файл Docker. Вы должны использовать Dockerfile для настройки ранее существующего изображения докеров, например, mysql или node или ubuntu, для определенного использования.

docker-compose позволяет вам выражать несколько команд докеров в виде .yml-файла в определенном формате.

Затем вы можете использовать docker-compose up для запуска набора контейнеров.

docker-compose .yml file для примера может начать искать нечто вроде этого

 
some-postgres: 
    environment: 
     POSTGRES_PASSWORD:mysecretpassword 
    image: postgres 

some-mongo: 
    image: mongo 

Вы бы добавить ссылки между контейнерами с links: линии. Эти и другие детали приведены в документах.

+0

Спасибо за это знание. ~ Java Guru (вопросы, связанные с докером, на http://singletonjava.blogspot.com/2016/02/docker-interview-questions-and-answers.html –

+1

@JavaGuru Добро пожаловать. Удачи. – Paul

Смежные вопросы