Docker совет №2: Оптимизация разработки с использованием томов

Sep 21, 2017 14:54 · 177 words · 1 minute read docker

Если вы создаете приложения, написанные на динамических языках, таких как PHP, Ruby, Python или Node, вы просто обязаны использовать тома (volumes) в разработке. Давайте разберемся!

Идея сборки нового docker-образа каждый раз, когда вы вносите изменения в код вашего приложения, не кажется очень продуктивной даже с учетом превосходной способности Docker’а кэшировать слои образов.

К счастью, мы можем использовать тома для монтирования кода приложения непосредственно в запущенный контейнер. Таким образом, если мы обновим код, изменения вступят в силу немедленно и будут видны в docker-контейнере. Обновление кода в реальном времени серьезно ускорит процесс разработки, не так ли?

Каждый раз собирая docker-образы вы можете получить полезный опыт, используя инструкцию COPY в Dockerfile — это обязательно пригодится при запуске контейнеров на staging/production окружениях, но в процессе разработки все же нужно монтировать том из хост-системы в соответствие пути COPY внутри контейнера.

Пример использования инструкции в Dockerfile:

# Dockerfile
 
# Копируем файлы в docker-образ.
COPY . /app

А так можно монтировать файлы в docker-контейнер, запускаемый с помощью docker-compose.yml:

# docker-compose.yml
 
services:
  app:
    # Монтируем текущий каталог в директорию `/app` внутри контейнера.
    volumes:
      - '.:/app'
tweet Share