Comments 9
Могу посоветовать ещё посмотреть ещё в сторону Docker Compose.
Он позволяет создать YAML-файл со всеми настройками и запускать связку контейнером одной командой
Что-то вроде:
# docker-compose.yml
version: '3.7'
services:
db:
...
ports:
- 5432:5432
app:
...
volumes:
- /Users/admin/Documents/WWW/:/home/www/
- /Users/admin/Documents/WWW/virtual.conf:/etc/httpd/conf.d/virtual.conf
- /Users/admin/Documents/WWW/15-xdebug.ini:/etc/php.d/15-xdebug.ini
ports:
- 80:80
$ docker-compose up
Не отписался под первой частью:
Можно сказать, что мы сейчас живём в Эру Docker.
Да ну? Эру аж с большой буквы? И вы на Маке эту Эру ощутили по сути в виртуалке?
это запуск API на своём уютном макбуке.
Вот это это многое объясняет. Уютном макбуке.
И только сисадмины, похоже, что-то знают.
Ага, что лишняя прослойка производительности ну никак не прибавляет. И надёжности тоже.
У меня возникала необходимость запускать у себя на ноутбуке такие вещи, как Ruby, MySQL, PostgreSQL. Это всё довольно плохо работало под Windows, поэтому приходилось использовать виртуализацию.
Извините, за Ruby не скажу, но MySQL, PostgerSQL, NodeJS (и NPM разумеется), Apache2, PHP, и даже Bind волне себе неплохо живут на Windows без всяких виртуалок, так зачем переходить на Мак (или хакинтош?) и там городить Докер? Не проще ли было тогда просто поставить Linux?
Неплохо не значит хорошо. С одной стороны в большинстве таких продуктов Windows поддерживается по остаточному принципу, с другой — в продакшен оно обычно под Linux крутится и нет-нет и различия всплывают, с одной регистронезависимостью windows можно несколько дней потерять.
Да и под Linux я уже несколько лет предпочитаю под докером проекты запускать. Основная причина: практическое отсутствие проблем с версиями библиотек и сред с минимумом накладных расходов. Из общесистемных зависимостей по сути один Докер да баш в проектах. Ну и какой-то прокси, автоматически настраивающий роуты к вновь поднятому контейнер.
Да это можно решить другими способами, например через nvm для одного проекта переключаться на 8 ноду, для другого на 10. Но эти способы уникальны для стэка, а для тех же баз я бы вообще не взялся искать способ поставить "нативно" несколько баз паралельно даже одной версии, не говоря о разных.
Да, сам Докер не без недостатков (одни ухищрения что бы заставить всё прозрачно работать от текущего пользователя чего стоят) и не первая технология контейнеризации под Linux (а кроссплатформенные вообще есть?). Но про эру Докер вполне можно говорить. Возможно конкуренты его скоро вытеснят, или он станет, например, унаследованным рантаймом для k8s. Но принес контейнеры в массы именно он. А от них индустрия уже вряд ли откажется, пока не появится что-то, сочетающее плюсы контейнеров и виртуалок без части их минусов. Bare metal останется только либо для простых проектов, только либо для очень требовательных к производительности/надёжности и при этом не масштабируемых горизонтально.
Я выбрал для примеров Mac, т.к. сам сейчас им пользуюсь, и по моим наблюдениям, много фронтендеров тоже пользуются им.
В первой части я как раз пытался ответить на вопрос «зачем?».
Если вкратце, то я подобрал вот такие пункты:
- Быстро, без боли и в одну команду разворачиваем нужное окружение (API, БД, сервисы) на рабочем компьютере (Mac, Windows, Linux)
- Уменьшаем риск сломать хост-систему, ставя на компьютер абстрактную Java
- Сами готовим своё приложение к продакшену и отвечаем за его эксплуатацию
Docker для фронтендера. Часть 2. Что ты такое?