Опубликовано 22 янв 2019Обновлено 9 окт 2025 11:50

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

docker
docker
контейнеры
контейнеры
разработка
разработка
News Title Block Picture
Содержание
Содержание
Поделиться

В статье «Упаковка 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). В нашем случае в роли такого диска будет выступать каталог ./my_flask_app, который будет смонтирован в каталог /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 существенно облегчает сборку, запуск и остановку вашего приложения. Наибольший эффект от его использования достигается при управлении приложением, состоящим из нескольких связанных контейнеров, о чем я расскажу в следующей статье.

Узнай, кто стоит за технологиями в K2 Cloud — и стань одним из них

Переходи на карьерную страницу, знакомься с нашими подходами и найди команду, подходящую именно тебе.

Другие новости

Продолжая использовать сайт k2.cloud, Вы соглашаетесь на обработку персональных данных, собираемых с использованием файлов cookie, а также посредством метрических программ «Яндекс Метрика», «ВК Реклама». Более подробная информация – в политике обработки и использования cookie-файлов.