Додавання та налаштування сайту на базі Docker-контейнера в ServBay
ServBay — це локальне середовище веб-розробки, спеціально розроблене для macOS, що підтримує численні мови та стек технологій. Окрім запуску вбудованих пакетів ServBay (таких як PHP, Node.js, Python, Go, Java, бази даних тощо) для розміщення сайтів, ви також можете використовувати Docker-контейнери для запуску та керування вашим сайтом або сервісом. Такий підхід забезпечує дуже високий рівень гнучкості, ізоляцію середовищ та стабільність конфігурацій, особливо корисний для проєктів із специфічними вимогами до оточення чи залежностей.
У цьому матеріалі детально описано, як додати вебсайт, що працює у Docker-контейнері, до ServBay і за допомогою зворотного проксі ServBay інтегрувати його у ваш локальний робочий процес розробки.
Огляд
Налаштувавши ServBay як зворотний проксі, ви зможете напрявляти запити на певні домени до служб, які працюють на потрібних портах усередині ваших Docker-контейнерів. ServBay відповідає за вхідний потік (наприклад, SSL-сертифікати, розподіл доменів тощо), а Docker-контейнер безпосередньо виконує вашу програму. Такий підхід об’єднує зручність управління ServBay та потужність контейнеризації Docker.
Нижче наведено покрокову інструкцію з додавання та налаштування сайту на базі Docker-сервісу у ServBay.
Передумови
Перш ніж почати, переконайтеся, що виконали наступні умови:
- ServBay встановлено та запущено: Ви успішно інсталювали та запускаєте ServBay на macOS.
- Docker встановлено та запущено: Ви маєте Docker Desktop або інше Docker-середовище інстальоване на macOS, і Docker сервіс активний.
- Docker-образ і контейнер підготовлені: У вас вже є зібраний чи завантажений Docker-образ вашого сайту чи додатка, і ви можете запустити цей образ, створивши контейнер.
Покрокова інструкція з додавання сайту
Крок 1: Підготовка та запуск Docker-контейнера
Спочатку потрібно переконатися, що ваш Docker-контейнер запущено, а необхідний сервіс усередині контейнера (наприклад, веб-сервер) слухає порт, відкритий на хості macOS через механізм портового мапінгу Docker.
Наприклад, якщо у вас є простий контейнер із Nginx, що слухає порт 80 всередині, ви можете виконати таку команду для мапінгу порту 8080 на хості до 80 в контейнері:
bash
docker run -d --name my-nginx-servbay -p 8080:80 nginx
1
У цьому прикладі Nginx у контейнері my-nginx-servbay
слухає порт 80
, але завдяки параметру -p 8080:80
цей порт зіставляється з портом 8080
на хості. Саме до цього порту ServBay буде доступатись.
Відповідно до ваших налаштувань та конфігурації Dockerfile, переконайтесь, що внутрішній сервіс слухає правильний порт і він правильно проброшений на хості.
Крок 2: Відкрийте інтерфейс керування ServBay
У папці додатків на вашому macOS знайдіть іконку програми ServBay
та двічі клацніть, щоб запустити панель управління ServBay.
Крок 3: Перейдіть до сторінки керування сайтами
Після запуску ServBay ви побачите головний інтерфейс. У лівому навігаційному меню знайдіть та натисніть на опцію Сайти
. Це переведе вас на сторінку керування сайтами в ServBay, де ви можете переглядати і налаштовувати всі додані локальні веб-сайти.
Ілюстрація: натисніть "Сайти" у лівому меню, щоб перейти на сторінку керування.
Крок 4: Додайте новий сайт
Внизу сторінки керування сайтами ви побачите кнопку +
. Натисніть її - у правій частині з’явиться форма для введення налаштувань нового сайту.
Ілюстрація: натисніть кнопку “+” внизу сторінки, щоб додати новий сайт.
Крок 5: Налаштуйте параметри сайту
У формі налаштувань нового сайту треба заповнити такі основні поля:
- Ім'я (Name): Вкажіть легко впізнаване ім’я для сайту, наприклад
Docker Nginx Demo
. Це ім’я використовуватиметься лише для внутрішнього керування в ServBay. - Домен (Domain): Введіть домен, за яким ви хочете відкривати сайт у браузері. Рекомендується використовувати суфікс
.servbay.demo
, щоб уникнути конфлікту із загальнодоступними доменами, наприкладdocker.servbay.demo
. ServBay самостійно пропише запис у ваш файл hosts, направивши цей домен на127.0.0.1
. - Протокол (Protocol): Виберіть протокол для сайту. Зазвичай достатньо залишити за замовчуванням
HTTP/HTTPS
. ServBay буде слухати порти HTTP (80) та HTTPS (443) й обробляти запити відповідно до налаштувань SSL. - Запит SSL-сертифіката (SSL Certificate Request Method): Рекомендується залишити
ServBay CA
. ServBay автоматично згенерує та керуватиме локальним SSL-сертифікатом від ServBay User CA. Якщо встановити ServBay Public CA у системний Keychain, браузери довірятимуть цим сертифікатам — це полегшує локальну HTTPS-розробку та тестування. За потреби можна обратиACME
(для Let's Encrypt) чиCustom
(власний сертифікат). - Тип сайту (Website Type): [Важливо] Оберіть
Зворотний проксі (Reverse Proxy)
. Це означає, що ServBay буде вхідною точкою для цього домену, і перенаправлятиме запити до вашого бекстенд-сервісу. - IP-адреса (IP Address): Укажіть IP-адресу, на якій Docker-контейнер слухає на хості. Для більшості локальних налаштувань – це
127.0.0.1
. - Порт (Port): Вкажіть порт на хості, на якому працює сервіс у Docker-контейнері. Це порт, який ви зазначали у команді
docker run -p <host_port>:<container_port>
. Якщо ви використовували-p 8080:80
, то тут вказуєте8080
.
Ілюстрація: введення налаштувань для Docker reverse proxy сайту.
Крок 6: Завершіть та збережіть налаштування
Після заповнення всіх необхідних полів натисніть кнопку Додати (Add)
у нижній частині форми.
ServBay обробить ваш запит, автоматично додасть відповідне правило зворотного проксі у веб-сервер (наприклад, Caddy або Nginx), а також відкоригує файл hosts для вказаного домену.
Після успішного збереження конфігурації ServBay, можливо, потрібно буде кілька секунд для застосування налаштувань — після цього можна переходити до тестування сайту.
Крок 7: Відкрийте сайт і використовуйте швидкі дії
Коли сайт додано, поверніться на сторінку керування сайтами, де з’явиться новий елемент із вашим сайтом. Переконайтеся, що його статус — «Запущено».
Тепер відкрийте у браузері ваш домен (наприклад, http://docker.servbay.demo
або https://docker.servbay.demo
). Якщо все налаштовано вірно, ServBay перенаправить трафік на Docker-контейнер, і ви побачите сторінку, яку він надає.
У списку сайтів ви побачите зручні іконки для різних швидкодій:
- Відкрити кореневий каталог сайту в IDE: (Для сайтів із типом "зворотний проксі" ця кнопка може вести у каталог конфігурацій ServBay або бути недоступною — залежить від версії та конфігурації ServBay)
- Відкрити сайт у браузері: швидко відкрити сайт у новій вкладці браузера.
- Переглянути логи сайту: відкрити логи доступу та помилок ServBay для сайту — це корисно для діагностики.
- Призупинити/включити сайт: тимчасово відключити або знову активувати проксі для сайту.
- Видалити сайт: повністю видалити цей сайт із налаштувань ServBay.
Ілюстрація: іконки для швидких дій поряд із сайтом у списку.
Примітки та найкращі практики
- Статус Docker-контейнера: Обовʼязково слідкуйте, щоб цільовий Docker-контейнер завжди був у стані “запущений”, інакше ServBay не зможе проксувати запити.
- Мапінг портів: Перевірте, що порт у Docker (
-p
параметр) збігається з портом, зазначеним у ServBay, і що він не використовується іншими процесами на хості. - Брандмауер: Переконайтеся, що у налаштуваннях безпеки macOS не блокуються порти, які використовує ServBay (за замовчуванням 80, 443), а також прокинутий порт з Docker.
- Режим мережі Docker: У більшості випадків зручно використовувати стандартний режим
bridge
з мапінгом портів через-p
. Якщо використовуєтьсяhost
-mode, ServBay зможе підʼєднатись напряму до порту у контейнері (тобто, якщо сервіс слухає на 80 — у налаштуваннях ServBay теж вказуйте 80), однак такий підхід несе ризик конфлікту портів. - ServBay CA: Для спрощення HTTPS-розробки настійно рекомендується встановити ServBay Public CA. Браузер тоді довірятиме локальним сертифікатам, і ви позбудетеся попереджень “Небезпечне зʼєднання”.
Поширені питання та розвʼязання проблем (FAQ)
Q: Після додавання сайту він недоступний — браузер повідомляє про помилку зʼєднання або таймаут?
A: Перевірте наступні моменти:
- Статус сайту у ServBay: У вкладці керування сайтами переконайтесь, що сайт “запущено”.
- Статус Docker-контейнера: У консолі запустіть
docker ps
, переконайтесь, що потрібний контейнер працює. - Мапінг портів Docker: Запустіть
docker ps
та перевірте колонкуPORTS
— порт на хості (наприклад,0.0.0.0:8080->80/tcp
або127.0.0.1:8080->80/tcp
— це має бути саме той порт, який ви прописували у ServBay). - Стан сервісу в контейнері: Переконайтесь, що внутрішній веб-сервіс (Nginx, Apache, Node-додаток і т.д.) дійсно слухає вказаний порт і немає внутрішніх помилок. При необхідності перегляньте логи командою
docker logs <container_id|name>
. - Логи ServBay: Клацніть на іконці логів біля вашого сайту у ServBay — там можуть бути деталі щодо помилок проксування.
- Перевірте hosts: Хоч ServBay і налаштовує hosts автоматично, варто вручну перевірити
/etc/hosts
— домен має вести на127.0.0.1
. - Брандмауер: Переконайтесь, що брандмауер не блокує доступ до портів ServBay і Docker.
Q: Чи можна керувати Docker-контейнерами через ServBay?
A: ServBay призначений для керування локальними веб-сервісами, базами даних, середовищами розробки, а також для маршрутизації трафіку на зовнішні сервіси (включаючи Docker-контейнери). Однак ServBay не має власного інтерфейсу для повноцінного управління життєвим циклом контейнерів (старт/стоп/збірка образів тощо). Для цього використовуйте Docker CLI чи інтерфейс Docker Desktop.
Q: Що таке ServBay CA і навіщо вона потрібна?
A: ServBay CA (Certificate Authority) — це власна система управління сертифікатами для спрощення локальної HTTPS-розробки. ServBay User CA використовується для випуску SSL-сертифікатів для ваших локальних веб-сайтів, а ServBay Public CA — це кореневий сертифікат User CA. Встановивши ServBay Public CA до системного Keychain, усі сертифікати, видані ServBay, будуть надійними в операційній системі та браузері. Це дозволяє без додаткових попереджень відкривати локальні HTTPS-сайти під керуванням ServBay, ефективно імітуючи продакшн-HTTPS для розробки і тестування.
Підсумок
Додавання сайту, заснованого на Docker-контейнері, у ServBay — це ефективний і гнучкий спосіб організувати локальний веб-розробницький процес: ServBay бере на себе керування доменами і маршрутизацією, а Docker дозволяє ізольовано та стабільно запускати різні додатки. Завдяки простій конфігурації зворотного проксі ви можете швидко інтегрувати Docker-країни до загального робочого процесу у ServBay. Дотримуйтесь наведених кроків і порад — і без проблем розгорнете локальні Docker-сайти у своєму середовищі розробки.