Как запустить docker compose на windows

Обновлено: 07.07.2024

Для кого эта статья

  • Для разработчиков, особенно для тех, кто незнаком с docker. Минимум теории, что и как работает, и сразу же получаете готовое окружение
  • Для всех других специальностей, кто хочет развернуть полноценный виртуальный web сервер у себя на компьютере и почувствовать себя разработчиком

Как все будет работать в итоге

Почему docker?

Исходя из всего вышеперечисленного вот почему я остановился на докер и почему рекомендую обязательно его рассмотреть при разработке.

Мой опыт

И то я очень много в нем не знаю, docker это очень обширная тема, и разбираться в нем и изучать его можно очень долго.

Начинаем установку

1. Устанавливаем git, чтоб он был доступен из командной строки. Процесс описывать не буду, это легко гуглится.

Затруднений при установке возникнуть не должно, делать все как описано в инструкции по этим ссылкам. Главное чтоб у вас установился Docker desktop, чтобы его иконка отображалась в строке состояния со статусом: is running

В процессе установки на своё усмотрение выделяете необходимое кол-во ядер, памяти и места на женском диске. Для windows не забудьте в настройках указать раздел жесткого диска.

После выполнения команды должна отобразиться версия докера.

4. Теперь мы выберем сборку контейнеров для докера и создадим папку, в которой все это будет храниться.

В нее входят следующие компоненты:

  • PHP (вы сами можете выбрать нужную вам 1 из 6 версий. начиная с 5.4 до 7.4)
  • Apache
  • MySQL
  • phpMyAdmin
  • Redis

6. Команда docker-compose up -d

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

Поздравляю! Теперь можете заходить на localhost и отобразиться страничка, которая расположена по адресу /Users/your_name/Documents/docker/lamp/www/index.php

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

Дополнение. Добавляем еще неограниченное кол-во хостов с проектами

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

нажимаем ctrl + o, ctrl+x (перезаписываем и сохраняем файл)

2. добавляем в файл конфига /Users/your_name/Documents/docker/lamp/config/vhosts/default.conf следующие строчки, он будет синхронизирован с контейнером Докер.

Дополнение. Настройки окружения

В процессе разработки порой нужно менять настройки того же php.ini

И запуститься ваш контейнер, но уже с примененными новыми настройками.

Редактируем конфиг docker-compose для phpmyadmin

Указываем контейнеру phpmyadmin наш php.ini добавив строчку в volumes.

Мой конфиг php.ini

Если нужен Imagick (php-imagick)

1. Добавляем следующие строки в файл docker-compose-lamp/bin/webserver/Dockerfile 2. Далее пересобираем наш контейнер

Подключение к контейнеру веб сервера через SSH

Заключение

Docker-compose — это утилита, позволяющая запускать одновременно несколько контейнеров, используя при этом единый файл конфигурации всего стека сервисов, нужных вашему приложению. Например, такая ситуация: запускаем node.js webapp, которому нужна для работы mongodb, compose выполнит build вашего контейнера с webapp (традиционный Dockerfile) и перед его запуском запустит контейнер с mongodb внутри; так же может выполнить линк их между собой. Что крайне удобно как в разработке, так и в CI самого приложения. Так сложилось, что Windows пользователи были обделены возможностью использовать столько удобное средство, ввиду того, что официальной поддержки данной ОС все еще нет. А python версия для *nix не работает в окружении windows cmd, ввиду ограничений консоли Windows.

Для того, чтобы запустить docker-compose, мы можем использовать консольную оболочку Babun. Это, так сказать, «прокаченный» форк cygwin.

Итак, рецепт запуска docker-compose в Windows из консоли babun такой:

280MB!) и устанавливаем сам babun, узнать больше об этой оболочке можно на ее домашней странице babun.github.io;
2. Распаковываем архив (после установки полученную папку можно удалять);
3. Запускаем файл install.bat и ждем, пока пройдет установка;
4. После в открывшемся окне babun введем команду:


И убедимся, что у нас самая последняя версия оболочки (далее все команды выполняются только внутри оболочки babun);
5. Если вам не нравится дефолтный shell babun (используется zsh), его можно изменить на bash. Для этого вводим:


6. Теперь нам нужно установить те самые зависимости Python, которых так не хватает docker-compose. Для этого выполним следующие команды по очереди:


7. Теперь мы готовы установить сам docker-compose:


Если все прошло успешно, увидим:

Для правильной работы docker-compose нужно иметь уже настроенное окружение консоли для работы с docker-machine или boot2docker, а так же сам клиент docker должен быть доступен в системном PATH. О том, что такое docker, docker-machine и как с ними работать отлично рассказывает официальная документация.

Для входа в окружение нашего хоста докера, запущенного в docker-machine, нужно выполнить:


Либо тоже самое для boot2docker:


Проверить правильность работы клиента docker можно так:


Если получаем список контейнеров или просто заголовки таблицы, значит, все ок!

На этой странице содержится информация о том, как установить Docker Compose. Вы можете запустить Compose на macOS, Windows и 64-битной Linux.

Требования

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

В десктоп системах, таких как Docker Desktop для Mac и Windows, Docker Compose входит в состав установки.

В системах Linux сначала установите Docker Engine для вашей ОС, как описано на странице установки Docker, а затем вернитесь сюда для продолжения установки Compose на Linux-системах.

Чтобы запустить Compose от имени пользователя без права root, см. раздел Управление Docker от имени пользователя без права root. (добавить ссылку)

Установка Compose

Следуйте инструкциям ниже, чтобы установить Compose на Mac, Windows, Windows Server или Linux, или узнайте об альтернативах, таких как менеджер пакетов pip для Python или установки Compose в качестве контейнера.

Установка Compose на macOS

Docker Desktop для Mac включает в себя Compose вместе с другими приложениями Docker, поэтому пользователям Mac не нужно устанавливать Compose отдельно.

Установка Compose на Windows

Docker Desktop для Windows включает в себя Compose вместе с другими приложениями Docker, по этому пользователям Windows нет необходимости устанавливать Compose отдельно.

Если вы запускаете демон Docker и клиент на Microsoft Windows Server, следуйте инструкциям на вкладке Windows Server.

Установка Compose на Windows Server

Follow these instructions if you are running the Docker daemon and client directly on Microsoft Windows Server and want to install Docker Compose.

Запустите от имени администратора PowerShell. Правый клик по ярлыку PowerShell, а затем выбирите Запустить от имени администратора. Ответьте Да на вопрос разрешить ли приложению делать изменения на устройстве.

Поскольку GitHub теперь требует TLS1.2 выполните в PowerShell слудующую команду:

Затем загрузите последнюю версию Compose командой:

Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\docker-compose.exe

Для установки другой версии Compose, замените 1.29.2 на версию Compose, которую вы хотите использовать.

Установка Docker Compose на Linux

В Linux бинарный файл Docker Compose можно загрузить со страницы релиза репозитория Compose на GitHub. Следуйте инструкциям по ссылке, которые включают в себя выполнение команды curl в терминале, чтобы загрузить двоичные файлы. Эти инструкции также описаны ниже.

Для alpine необходимы следующие пакеты: py-pip , python3-dev , libffi-dev , openssl-dev , gcc , libc-dev , rust , cargo и make .

Выполните эту команду для загрузки Docker Compose:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Для установки другой версии замените 1.29.2 на нужный вам номер.

Если у вас возникли сложности с установкой с помощью curl , читайте альтернативные способы установки.

Дайте права на выполнение бинарному файлу:

$ sudo chmod +x /usr/local/bin/docker-compose

Примечание: Если после установки команда docker-compose не срабатывает, проверьте путь установки. Вы также можете создать символическую ссылку на /usr/bin или любой другой каталог.

Опционально существует возможность установить автозаполнение в оболочках bash и zsh .

$ docker-compose --version docker-compose version , build 1110ad01

Альтернативная установка

Установка с помощью pip

Для alpine необходимы следующие пакеты: py-pip , python3-dev , libffi-dev , openssl-dev , gcc , libc-dev , rust , cargo , and make .

Compose можно установить с сайта pypi с помощью pip . Если вы устанавливаете с помощью pip , мы рекомендуем вам использовать virtualenv, поскольку многие операционные системы системы имеют системные пакеты python, которые конфликтуют с docker-compose зависимостями. Смотрите virtualenv учебник, чтобы начать.

Если вы не пользуетесь virtualenv,

Минимально необходимая версия pip 6.0.

Установка в контейнере

Compose также можно запустить внутри контейнера, используя небольшую обертку из bash-скрипта. Чтобы установить compose как контейнер, выполните эту команду:

Установка пре-релиза

Если вы хотите попробовать предварительную сборку, вы можете загрузить релиз кандидаты со страницы релиза репозитория Compose на GitHub. Следуйте инструкциям по ссылке, которые включают в себя выполнение команды curl в терминале, чтобы загрузить двоичные файлы.

Предварительные сборки позволяют вам опробовать новые возможности до их выпуска, но могут быть менее стабильными.

Обновление

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

Если Compose обнаружит контейнеры, которые были созданы без меток, он откажется запускаться. Если вы хотите продолжать использовать существующие контейнеры (например, потому что они содержат данные, которые вы хотите сохранить), вы можете использовать Compose 1.5.x для их миграции с помощью следующей команды:

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

Удаление

Для удаления Docker Compose если вы устанавливали с помощью curl выполните:

Для удаления Docker Compose установленного с помощью pip :

Увидели ошибку "Permission denied"?

Если вы видите ошибку "Permission denied" при использовании любого из вышеуказанных методов, у вас, вероятно, нет соответствующих прав для удаления docker-compose . Чтобы принудительно удалить, добавьте sudo к любой из вышеуказанных команд и запустите ее снова.


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

Мы установим его, напишем простой файл Compose и запустим контейнер.

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

Вступление

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

Но часто приложения требуют, чтобы разные контейнеры работали и общались друг с другом.

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

Тут на помощь приходит Docker Compose.

Давайте начнем его устанавливать, а затем напишем файл Compose.

Установка Docker Compose

В Ubuntu 18.04 установить Docker Composer просто:

Чтобы проверить установку, вы можете проверить его версию:

Версии Docker Engine и Docker Compose важны, так как их выпуски встречаются часто, а функции добавляются и удаляются.

Показанная выше версия (1.17.1) была выпущена в ноябре 2017 года.

Если вам нужен более новый выпуск, вы можете либо включить репозиторий Ubuntu Universe и получить более новый пакет, либо даже загрузить и установить последний выпуск непосредственно с веб-сайта Docker Compose:

Файл Docker Compose

Docker Compose читает файл YAML, который обычно называется docker-compose.yml.

В начале, синтаксическая версия сообщается как 3.

Далее, в разделе служб указан только один контейнер (apache), а теги image, container_name, ports и volume используются для описания того, как он должен выполняться.

Теперь создайте каталог с именем www и поместите этот файл index.html внутрь.

Команды Docker Compose

Команда up позаботится обо всем: загрузить зобразы из Docker Hub, если они еще не существуют в локальном кэше, создать пользовательские образа (что не так; мы рассмотрим это в следующем разделе) и запустить контейнеры.

Ключ -d указывает Docker Compose запускать контейнеры в фоновом режиме.

Если вместо docker-compose.yml используется другое имя файла, это можно сообщить с помощью -f.

Обратите внимание, что команда запуска намного проще, чем аналог запуска Docker.

У него есть еще два преимущества: он не изменяется независимо от содержимого файла Compose, и если в файле Compose указано более одного контейнера, все они будут запущены.

Для сравнения команда docker run будет выглядеть так:

Если вы получаете синтаксические ошибки, проверьте синтаксис YAML с помощью онлайн-парсера, такого как этот.

Вы можете проверить, работает ли контейнер.

Запуск нескольких контейнеров

Давайте теперь посмотрим на более сложный файл Compose.

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

Нам нужен контейнер с Apache и PHP, другой контейнер с MySQL и, возможно, контейнер PHPMyAdmin для взаимодействия с MySQL. Docker-compose.yml будет:

Этот файл Compose запускает три контейнера, каждый из которых имеет раздел под службами.

Обратите внимание, что мы определяем некоторые переменные окружения под окружением.

Определение restart: всегда указывает Docker автоматически запускать контейнеры при запуске службы Docker (например, в случае перезагрузки).

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

Легко запомнить, верно?

Проверьте, созданы ли контейнеры.

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

Например, мы не открывали порт 3306 службы MySQL (как видно из приведенного выше вывода), но PHPMyAdmin может получить доступ к этому порту.

Создание образов с помощью Docker Compose

Если вам нужно создать образ, а не использовать существующее, просто добавьте тег сборки.

В приведенном ниже примере мы говорим Docker Compose найти текущий каталог для Dockerfile.

Тег образа будет использоваться для названия нового образа.

Переопределение с использованием нескольких файлов Docker Compose

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

Вам просто нужно создать вызываемые файлы переопределения и запустить контейнеры, указав их.

Они перезапишут предыдущие определения, сделанные в базовом файле Compose.

Например, давайте создадим файл переопределения с именем docker-compose-prod.yml и определим другой пароль для MySQL.

Вы можете использовать другой хост для запуска контейнеров. Если вы используете один и тот же хост, необходимо удалить контейнер mysql и связанный с ним том. В противном случае будет использоваться существующий контейнер со старыми учетными данными.

И тогда вы можете выполнить команду ниже.

Важно следить за порядком файлов.

Можно использовать несколько файлов.

В нашем примере будет переопределен только раздел среды службы mysql.

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

Заключение

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

Существует множество возможностей, и настоятельно рекомендуется прочитать руководство по Docker Compose.

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

Читайте также: