Eclipse Theia — это расширяемая облачная IDE, запущенная на удаленном сервере и доступная в браузере. Внешне она выглядит и работает наподобие Microsoft Visual Studio Code. Отличие Eclipse Theia от других облачных IDE состоит в возможности расширения; ее можно изменять с помощью пользовательских расширений, что позволяет получить облачную IDE, настроенную под ваши нужды.
В этом обучающем руководстве мы выполним развертывание Eclipse Theia на сервере Ubuntu 18.04 с помощью Docker Compose. Мы подключим среду к домену с помощью nginx-proxy и защитим ее TLS-сертификатом Let’s Encrypt, выделяемым с помощью дополнительной надстройки. Более подробное описание можно найти в обучающем руководстве Настройка облачной IDE-платформы Eclipse Theia в Ubuntu 18.04.
theia.your-domain
.theia.your-domain
, указывающим на публичный IP-адрес вашего сервера. В руководстве Введение в DigitalOcean DNS содержится подробная информация по их добавлению.Создайте директорию для хранения всех данных Eclipse Theia:
- mkdir ~/eclipse-theia
Перейдите в директорию:
- cd ~/eclipse-theia
Создайте файл nginx-proxy-compose.yaml
для сохранения конфигурации Docker Compose для nginx-proxy
:
- nano 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, а также определить тома, которые будут доступны во время исполнения.
Сохраните и закройте файл.
Разверните конфигурацию:
- docker-compose -f nginx-proxy-compose.yaml up -d
Итоговый результат будет выглядеть следующим образом:
OutputCreating 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
ожидает, что комбинации для входа будут находиться в файле с именем подключенного домена, который имеет формат htpasswd
и хранится в директории /etc/nginx/htpasswd
в контейнере.
Выполните установку htpasswd
:
- sudo apt install apache2-utils
Пакет apache2-utils
содержит утилиту htpasswd
.
Создайте директорию /etc/nginx/htpasswd
:
- sudo mkdir -p /etc/nginx/htpasswd
Создайте файл для сохранения учетных данных вашего домена:
- sudo touch /etc/nginx/htpasswd/theia.your-domain
Запустите следующую команду, указав комбинацию имени пользователя и пароля:
- sudo htpasswd /etc/nginx/htpasswd/theia.your-domain username
htpasswd
добавит имя пользователя и пароль в конец файла.
Создайте конфигурацию для развертывания Eclipse Theia:
- nano 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
, задаете для параметра restart
значение always
и определяете theiaide/theia:next
как образ контейнера. Также вы задаете для init
значение true
. Затем нужно задать две переменные среды в разделе environment
: VIRTUAL_HOST
и LETSENCRYPT_HOST
.
Сохраните и закройте файл.
Теперь выполните развертывание Eclipse Theia с помощью следующей команды:
- docker-compose -f eclipse-theia-compose.yaml up -d
Вывод будет выглядеть следующим образом:
Output...
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 и увидите графический интерфейс редактора. Также вы увидите символ замка, показывающий, что соединение является защищенным.
Теперь вы можете использовать Eclipse Theia, универсальную облачную IDE, которая установлена на вашем сервере Ubuntu 18.04 с помощью Docker Compose и nginx-proxy
. Вы обеспечили безопасность вашей установки с помощью бесплатного TLS-сертификата Let’s Encrypt и создали экземпляр для запроса учетных данных пользователя при входе. Вы можете работать с исходным кодом и документами индивидуально или вместе с вашей командой. Также вы можете попробовать выполнить сборку вашей собственной версии Eclipse Theia, если вам требуются дополнительные функции. Дополнительную информацию о том, как это можно сделать, см. в документации Theia.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.