Природне інтегрування середовища розробки з Docker

Я написав 4 пости в цьому блозі, де пояснюю, як використовувати docker у локальному середовищі розробки. Більшість наших проєктів створюються з використанням Docker з нуля, оскільки це один з найпростіших способів залучити нового розробника до проєкту та найзручніший спосіб повернутися до проєкту після деякого часу. Як я використовую docker та docker-compose, майже нічого не змінилося з того часу, окрім кількох покращень у роботі з томами. Однак те, що змінилося давно і я цього не охопив у цьому блозі, це те, що я майже не використовую команду docker compose run для запуску команд у контейнерах.

Натомість, я маю проксі-команди (локальні команди в моєму $PATH), які виконують docker compose run за мене. Є лише одна причина для цього: на моєму локальному комп'ютері майже все dockerized, і я не люблю щоразу вводити docker compose run, коли хочу виконати команду rails.

Отже, як виглядає одна з таких проксі-команд? Ось приклад для команди rails:

#!/bin/bash
docker compose run --rm web rails "$@"

Цей скрипт просто виконує docker-compose run (одноразову команду) на сервісі web. У цьому випадку це rails, і передає $@ як аргумент для rails, що означає, що все, що ви надішлете у команду rails, буде передано команді rails в контейнері. Це дозволяє вам виконувати будь-яку підкоманду rails, таку як rails c, rails db:migrate тощо.

Як ви можете побачити, є одна умова для цього, щоб працювало: всі проєкти, де ви використовуєте команду rails, повинні мати файл docker-compose.yml, і цей файл docker-compose.yml має містити сервіс web, де знаходиться команда rails (тобто де живе додаток). Ось тут на допомогу приходить принцип Конвенція замість конфігурації.

Ці команди виявилися надзвичайно корисними для мене, і, як ви можете уявити, у мене є багато таких команд у моєму $PATH крім rails: bundle, rake, ruby, npm, yarn, standardrb. Як завжди, вибір за вами.

До цього часу я жодного разу не зіткнувся з відсутністю інструментів, працюючи повністю на Docker. Завдяки цьому трюку я можу навіть запускати певні розширення VS Code, які надзвичайно корисні в моїй повсякденній роботі, такі як Standard Ruby та StandardJS.

Якщо ви ще не спробували, я настійно рекомендую вам це зробити!

Перекладено з: Nativifying a docker development environment

Leave a Reply

Your email address will not be published. Required fields are marked *