Запросить демо
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Дополнительные услуги
Оставить заявку
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Узнать стоимость
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Дополнительные услуги
Попробовать бесплатно
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Дополнительные услуги
Быть в теме

Работа с контейнерами в Docker Compose

22.01.2019 4 минуты 204

В статье “Упаковка простого Flask приложения в Docker контейнер” вы создали простое Flask приложение и заставили его запускаться внутри контейнера. В этой статье мы продолжим начатый вами проект, добавив к нему поддержку Docker Compose, предназначенного для автоматизации процесса запуска большого количества связанных контейнеров в сложных приложениях.

Файл docker-compose.yml

В директории нашего проекта my_project создайте файл docker-compose.yml, в который необходимо добавить следующее содержимое

$ cat docker-compose.yml
web:
 build: ./my_flask_app
 ports:
   - "5000:5000"
 volumes:
   - ./my_flask_app:/app 

Описание содержания docker-compose.yml

web:

Название компонента приложения, управляемого Docker Compose. Каждый компонент запускается в отдельном контейнере или их группе

 build: ./my_flask_app

Обозначение того, что данный компонент будет запускаться из образа, который необходимо собрать. Инструкции по сборке будут искаться в Dockerfile в директории ./my_flask_app относительно docker-compose.yml файла


			 ports:
			   - "5000:5000"
		

Обозначение того, что необходимо выполнить публикацию порта 5000 данного компонента в порт 5000, доступный по внешнему IP-адресу хоста (или виртуальной машины), на котором будет запущено приложение.


			 volumes:
			   - ./my_flask_app:/app
		

Обозначение того, что внутрь контейнера, отвечающего за данный компонент приложения, необходимо подключить Docker диск (Docker Volume). В данном случае в роли Docker диска будет выступать директория ./my_flask_app, которая будет cмонтирована в директорию /app внутрь контейнера. Эта операция выполнена для того, чтобы можно было легко менять Flask приложение и наблюдать изменения обновляя окно браузера, а не выполняя пересборку всего контейнера целиком. Попробуйте изменить вывод функции hello_world в файле ./my_flask_app/app.py, чтобы в этом убедиться

Если вы еще не остановили запущенный в прошлой статье контейнер, сделайте это, чтобы не возникло конфликта с использованием порта 5000 в процессе запуска нового контейнера, который будет управляться Docker Compose.

Работа с контейнерами в Docker Compose. Запуск контейнера

Сборка и запуск нового контейнера выполняется командой

$ docker-compose up -d

Ключ -d необходим, чтобы запустить ваше приложение, состоящее из одного контейнера, и вернуть управление терминалу, в котором вы вызывали docker-compose.

После успешной сборки и запуска контейнера, вы сможете снова увидеть вывод «Moe Flask приложение в контейнере Docker.» в браузере по адресу http://192.168.99.100:5000/.

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

$ docker-compose build

А перезапуск контейнера вместе с предварительной пересборкой, выполняется командой

$ docker-compose up -d --build

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

$ docker-compose ps

 Name Command State Ports
----------------------------------------------------------------
myproject_web_1 python app.py Up 0.0.0.0:5000->5000/tcp

Остановка и удаление приложения

Остановка приложения выполняется командой

$ docker-compose stop
Stopping myproject_web_1 ... done

Одновременная остановка и удаление выполняются командой

$ docker-compose down
Stopping myproject_web_1 ... done
Removing myproject_web_1 ... done

Использование Docker Compose существенно облегчает сборку, запуск и остановку вашего приложения. Наибольший эффект от его использования достигается при управлении приложением, состоящим из нескольких связанных контейнеров, о чем я расскажу в следующей статье.

Сервисы упоминаемые в статье

  1. Публичное облако КРОК

Не пропустите самые важные, интересные и полезные статьи недели

Ваш e-mail успешно подписан.

Смотрите также