Thank you for reading this post, don't forget to subscribe!
С переходом инструментов разработки в облачную среду начала расти потребность в создании и внедрении облачных платформ IDE (Integrated Development Environment, интегрированная среда разработки). Облачные IDE-среды позволяют большим командам разработчиков совместно развивать проект в режиме реального времени. При этом они используют единую среду, что сводит к минимуму несовместимости и повышает производительность. Облачные IDE, доступные в веб-браузерах, работают с любого типа современного устройства.
Eclipse Theia – это IDE среда, работающая на удаленном сервере и доступная в простом браузере. Визуально она очень похожа на Microsoft Visual Studio Code, а это значит, что она поддерживает много языков программирования, имеет гибкий макет и встроенный терминал. Eclipse Theia отличается от других программ IDE своей гибкостью – она позволяет полностью подогнать платформу под ваши требования.
В этом мануале вы узнаете, как развернуть платформу Eclipse Theia на сервере CentOS 7 с помощью Docker Compose, инструмента оркестровки контейнеров. Вы откроете к ней доступ на своем домене, используя nginx-proxy, автоматизированной системы для Docker, которая упрощает процесс настройки обратного прокси-сервера Nginx для контейнера. Для защиты трафика мы будем использовать бесплатные сертификаты Let’s Encrypt, для этого сервис предлагает специальный аддон.
Требования
- Сервер CentOS 7,
- Установка Docker
- Docker Compose,
- Зарегистрированное доменное имя, указывающее на ваш сервер. В этом мануале будет использоваться условный домен theia.your_domain.
- DNS-запись А (для theia.your_domain), направленная на ваш внешний IP-адрес.
1: Развертывание nginx-proxy и расширения Let’s Encrypt
Сначала нужно развернуть nginx-proxy и его аддон для its Let’s Encrypt с помощью Docker Compose. Это активирует автоматическое получение и обновление TLS-сертификатов, благодаря чему после развертывания платформа Eclipse Theia будет доступна по HTTPS.
В этом мануале мы будем хранить все файлы в каталоге ~/eclipse-theia. Создайте его:
mkdir ~/eclipse-theia
Перейдите в каталог:
cd ~/eclipse-theia
Конфигурация Docker Compose для nginx-proxy будет храниться в файле nginx-proxy-compose.yaml. Откройте этот файл в текстовом редакторе:
vi nginx-proxy-compose.yaml
А затем вставьте в файл такие строки:
version: '2'
services:
nginx-proxy:
restart: always
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- "/etc/nginx/htpasswd:/etc/nginx/htpasswd"
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "/etc/nginx/certs"
letsencrypt-nginx-proxy-companion:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
volumes_from:
- "nginx-proxy"
В этом файле мы определили два сервиса, которые будет запускать Docker Compose: nginx-proxy и расширение Let’s Encrypt. В качестве образа для прокси используется jwilder/nginx-proxy, затем связываются порты HTTP и HTTPS и определяются тома, которые будут доступны серверу во время выполнения.
Тома – это каталоги на сервере, к которым есть полный доступ у определенного сервиса и которые вы позже будете использовать для настройки аутентификации пользователя. Для этого мы будем использовать первый том из списка, который связывает локальный каталог /etc/nginx/htpasswd с таким же каталогом в контейнере. В этой папке nginx-proxy ищет файл с именем целевого домена, содержащий учетные данные для аутентификации пользователя в формате htpasswd (username:hashed_password).
Затем указывается образ Docker для расширения, открывается доступ к сокету Docker и определяется том. После этого мы указываем, что аддон должен наследовать доступ к томам nginx-proxy. Оба сервиса имеют значение always в строке restart, благодаря чему Docker будет перезапускать контейнеры в случае сбоя или перезагрузки системы.
Сохраните и закройте файл.
Разверните конфигурацию:
docker-compose -f nginx-proxy-compose.yaml up -d
Здесь нужно передать имя файла nginx-proxy-compose.yaml параметру -f команды docker-compose – он указывает файл, который нужно запустить. Затем мы передаем оператор up, который запустит контейнеры. Флаг -d включает режим detached, что означает, что Docker Compose будет запускать контейнеры в фоновом режиме.
Вывод команды будет выглядеть так:
Creating network "eclipse-theia_default" with the default driver
Pulling nginx-proxy (jwilder/nginx-proxy:)...
latest: Pulling from jwilder/nginx-proxy
8d691f585fa8: Pull complete
5b07f4e08ad0: Pull complete
...
Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28
Status: Downloaded newer image for jwilder/nginx-proxy:latest
Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)...
latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion
89d9c30c1d48: Pull complete
668840c175f8: Pull complete
...
Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a
Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest
Creating eclipse-theia_nginx-proxy_1 ... done
Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 ... done
Итак, мы развернули nginx-proxy и его расширение для Let’s Encrypt через Docker Compose. Теперь можно установить Eclipse Theia.
2: Развертывание Eclipse Theia
Сейчас мы создадим файл, содержащий все валидные комбинации входа, которые должен будет ввести пользователь. Затем мы развернем Eclipse Theia на своем сервере с помощью Docker Compose и и откроем к нему доступ по своему домену с помощью nginx-proxy.
Как говорилось в предыдущем разделе, nginx-proxy ищет комбинации учетных данных в файле, имя которого совпадает с именем вашего домена. Файл должен быть в формате htpasswd и храниться в каталоге /etc/nginx/htpasswd в контейнере. Локальный каталог, который связан с виртуальным, не обязательно должен быть именно тем, что указан в конфигурации nginx-proxy.
Для создания комбинаций учетных данных для входа в систему сначала необходимо установить htpasswd. Выполните следующую команду:
sudo yum install httpd-tools
Пакет httpd-tools содержит утилиту htpasswd.
Создайте каталог /etc/nginx/htpasswd
sudo mkdir -p /etc/nginx/htpasswd
Затем создайте файл для хранения учетных данных:
sudo touch /etc/nginx/htpasswd/theia.your_domain
Вместо theia.your_domain укажите ваш домен.
Чтобы добавить в файл имя и пароль, введите такую команду:
sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username
Замените username на имя, которое вы хотите добавить в файл. Вас дважды попросят ввести пароль. После этого htpasswd добавит имя пользователя и хешированный пароль в конец файла. Вы можете повторить эту команду с новыми учетными данными, чтобы добавить в файл другие записи.
Теперь нужно создать конфигурацию для развертывания Eclipse Theia. Хранить ее мы будем в файле eclipse-theia-compose.yaml. Создайте его в текстовом редакторе:
vi eclipse-theia-compose.yaml
Добавьте в файл такие строки:
version: '2.2'
services:
eclipse-theia:
restart: always
image: theiaide/theia:next
init: true
environment:
- VIRTUAL_HOST=theia.your-domain
- LETSENCRYPT_HOST=theia.your-domain
В этой конфигурации мы определяем один сервис eclipse-theia с theiaide/theia:next в качестве образа контейнера, где параметр restart имеет значение always. Параметр init имеет значение true, чтобы Docker мог использовать init в качестве главного менеджера процессов при запуске Eclipse Theia внутри контейнера.
Затем мы указываем две переменные среды в разделе environment: VIRTUAL_HOST и LETSENCRYPT_HOST. Первая переменная передается nginx-proxy и сообщает ему, на каком домене должен быть открыт контейнер, а вторая используется расширением Let’s Encrypt и указывает, для какого домена запрашивать сертификаты TLS. Значения этих переменных должны быть одинаковыми (если только вы не указали подстановочный знак в качестве значения для VIRTUAL_HOST).
Не забудьте заменить theia.your_domain своим доменом, затем сохраните и закройте файл.
Теперь можно развернуть Eclipse Theia.
docker-compose -f eclipse-theia-compose.yaml up -d
В итоге вы получите такой вывод:
...
Pulling eclipse-theia (theiaide/theia:next)...
next: Pulling from theiaide/theia
63bc94deeb28: Pull complete
100db3e2539d: Pull complete
...
Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109
Status: Downloaded newer image for theiaide/theia:next
Creating eclipse-theia_eclipse-theia_1 ... done
Затем в вашем браузере откройте домен, который вы использовали для Eclipse Theia. Вы увидите форму входа. Предоставив правильные учетные данные, вы получите доступ к графическому интерфейсу Eclipse Theia. В адресной строке вы увидите зеленый замочек (слева от адреса сайта), что означает, что ваше соединение надежно защищено. Если сейчас этого значка там нет, подождите пару минут и перезагрузите страницу – возможно, на получение сертификатов ушло немного больше времени.
3: Использование интерфейса Eclipse Theia
В этом разделе мы попробуем использовать базовые функции интерфейса Eclipse Theia.
С левой стороны панели IDE расположен вертикальный ряд из четырех кнопок, они представляют наиболее часто используемые функции боковой панели.
Эту панель вы можете настроить самостоятельно: при желании можно легко изменить порядок этих кнопок, переместить или удалить их из панели. По умолчанию первая кнопка открывает панель Explorer, которая предоставляет древовидную навигацию по структуре проекта. Здесь вы можете управлять своими папками и файлами, создавая, удаляя, перемещая и переименовывая их по мере необходимости.
После создания нового файла через меню File в новой вкладке откроется пустой файл, а после сохранения его имя будет отображаться на боковой панели Explorer. Создание папок происходит при помощи клика правой кнопкой мыши по боковой панели Explorer; здесь выберите New Folder. Вы можете развернуть папку, кликнув на ее имя; перетащив файлы и папки в верхние части иерархии, вы переместите их в новое место.
После этого по умолчанию идут опции для поиска и замены. Последней идет опция отладчика, которая предоставляет все общие действия для отладки через панель. Вы можете сохранить настройки отладки в файле launch.json.
Центром GUI является ваш редактор, который вы можете разделить вкладками для редактирования кода. Вы также можете изменить вид редактирования на сеточную систему или параллельные файлы. Как и все современные платформы IDE, Eclipse Theia поддерживает выделение в коде.
Вы можете получить доступ к терминалу с помощью сочетания клавиш CTRL+SHIFT+`. Также можно нажать Terminal в раскрывающемся меню вверху и выбрать New Terminal. Терминал откроется в нижней панели. Его рабочий каталог будет находиться в рабочей области проекта, которая содержит файлы и папки, показанные на боковой панели Explorer.