Як тестувати контейнери RoR з GitLab CI у контейнері

Чим гарний GitLab, так це тим, що будучи за габаритами слоном у посудній лавці, він вміє акуратно встановлюватися і майже завжди працює з коробки. Але погано вміє відновлюватися і дбати про себе, коли дуже прямі руки начебто моїх порушують звичне йому оточення. Не буду заглиблюватися в те, як мені вдавалося вбити його до стану, коли навіть видалення та встановлення з нуля не допомагає, але під уникнення черговий нескінченної епопеї з дебагом і перевстановлення сервера я виніс все це справа в Docker контейнер. Зручно — на робочій машині немає мільйона залежностей, примонтировал директорії для репозиторіїв, журнали та бази даних і все працює. Відновлення — перезаснувати контейнер і згодувати бекап (до речі, не забудьте перевірити свої бекапи, як свідчить досвід GitLab, це не зайве).

З іншого боку, є розроблювальна Rails додаток, яке на реальній машині тримає тільки код; Rails, gems, і все інше спочиває в Docker контейнері. Для своєї роботи вона використовує Redis і Postgres, кожен знаходиться на своєму контейнері. Для кожного контейнера примонтирована директорія, щоб важливі для додатка дані не залишалися всередині.



Завдання в тому, щоб Gitlab CI нормально відпрацював. Начебто все просто, але — він сам знаходиться в контейнері.

Читати далі →