Запустите свой собственный Кодовый сервер Контейнер с предварительно загруженными инструментами DEV (SDK, пакеты NPM, CLI и т. Д.) Для эффективной и надежно доступной веб -IDE в вашем Homelab или Private Cloud!
Почему VS код в контейнере?
Отдаленное развитие завоевало мир штурмом, это не просто тенденция, но и здесь оставаться новым способом, который выполняет обещание баланса между работой и личной жизнью.
Команды должны быстро адаптироваться и развернуть инфраструктуру, которая обеспечивает производительность разработчиков, и один из лучших способов, которые мы нашли, — это скорость до адаптации.
Встание и запуск просто, так как масштабирование контейнеров со всеми инструментами и персонализированными предпочтениями готова к работе. Написание кода никогда не было проще, нигде и на любом устройстве, работающем за вашим собственным облаком.
Начиная
Мы предоставили полные образцы кода, используемые в этом руководстве, проверьте наш GitHub Репозиторий для начала.
👉 Клон репо 📜 Создать .env
Файл 🔒 Генерировать сертификаты SSL 🐳 Vi Dockerfile
С вашими собственными сценариями 🚀 Запустите стек с Docker-Compose Up
!
Клонировать репо на хост -сервере с Docker
или Подман
настроен. Рекомендуется прикрепить точки монтирования для хранения вашей кодовой базы, изолированной из времени выполнения контейнера для избыточного и отказания.
$ git clone https://github.com/DigitalTransformation/vs-code-container-with-ssl.git
Далее мы настроим необходимые переменные среды и пути данных, используя включенные .env.template реплицируется как .env
(Примечание: это исключено по умолчанию в .gitignore).
Постоянное хранилище для расширений и настройки VSCODE также может быть включено путем отображения Host_*
переменные для удобства против перезапуска контейнеров и восстановления. В противном случае вы будете совершенно несчастны, увидев все предпочтения!
Популярное продление кода Настройки Sync Также еще один отличный способ резервного копирования предпочтений на частных GIST, но требует переустановки расширений на каждой новой сборке изображения.
Вот пример того, что вам нужно определить в .env
:
VIRTUAL_HOST=10.0.0.1 VIRTUAL_PORT=8555 HOST_CONFIG_PATH=./config HOST_LOG_PATH=./logs HOST_CODE_PATH=/mnt/codebase CODE_PATH=/code TZ=America/New_York PASSWORD=SUDO_PASSWORD=
Nginx используется для перенаправления трафика из [::]: 80
вверх по течению https port [::]: 8443
с самоподнешенными SSL-сертификатами. Оформить и запустить GENERATE_CERTS.SH Скрипт для излучения требуемых сертификатов с ключом подписи с помощью openssl
Анкет
Поместите оба nginx.conf и сертификаты под путями, определенными в Code-server.yaml
.
listen [::]:443 ssl default_server; ssl_certificate /etc/nginx/certs/ssl.crt; ssl_certificate_key /etc/nginx/certs/ssl.key; ssl_protocols TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;
Наконец, разверните стек контейнеров на хосте Docker, используя команду Docker-Compose -f-кодовый спервер.yaml Up
Анкет Это может занять 15-20 минут в зависимости от вашей аппаратной и сетевой пропускной способности для начальной сборки. DockerFile предварительно конфигурирует ряд DevTools и обновляет базовые пакеты изображений.
В соответствии с Docker CIS, ограничения ресурсов определяются на каждом из контейнеров, но могут быть настроены на ваше оборудование в Compose Code-server.yaml файл.
Предварительно установленные инструменты разработки
Вот краткий обзор того, что такое Dockerfile
делает, чтобы расширить LinuxServer/Code-Server базовое изображение. Это позволяет быстро развернуть контейнеры и увеличить использование команд DEV с помощью инструментов, готовых к работе.
Выходное изображение включает в себя SDK для рабочих нагрузок разработки приложений облачных приложений, таких как React, Node, C#, AWS и Azure Cloud CLI.
* AWS CLI Tools * aws-shell * amplify cli * Azure CLI * Netlify CLI * NPM packages * yarn (upstream) * gatsby-cli * gulp * create-react-app * .NET Core SDK and Runtime * 5.0.0 * 3.1.0 * 2.1.0 * Python global env * python3 python3-pip python3-dev * Ubuntu apt packages * Networking * wget * apt-transport-https * libssl-dev libffi-dev * Tools * ranger * tree * unzip * ansible * vim * htop * iputils-ping * OS/Misc * systemd * build-essential * ffmpeg * youtube-dl * chromium-browser * Default shell --> zsh/oh-my-zsh * zsh-syntax-highlighting * zsh-autosuggestions * zsh-completions * history-search-multi-word
См. Dockerfile Для слоев изображения. Наш размер изображения сборки был хорошо выше 6,5 ГБ
но может быть таким же минимальным, как ваши требования к инструментам разработчиков.
Отдаленная отладка
По умолчанию Dockerfile
и Code-server.yaml
настроены на разоблачение портовых диапазонов 5000-5010
и 8000-8010
обычно используется для разработки веб -приложений. Настройте это для вашей рабочей нагрузки, такой как React, Gatsby, Angular, Django и т. Д., Чтобы обеспечить удаленную отладку экземпляров HTTP, которые работают внутри контейнера.
Чтобы разрешить внешний доступ к фреймволкам узлов, которые зависят http-server
(создано с npm
или yarn
) Вам может также понадобиться обновить ваш Package.json
и свяжите время выполнения с IP -IP -хостом вместо Localhost.
Вот несколько общих примеров:
{ "scripts": { "ng:start": "ng serve --host 0.0.0.0", "npm:start": "http-server --host 0.0.0.0", "gatsby:start": "gatsby develop --host 0.0.0.0" } }
В качестве альтернативы, если вы предпочитаете не выставлять порты, ознакомьтесь с Vscode-Browser-Preview расширение, которое позволяет Хром
Основанный осмотр и отладка в самом контейнере.
Соображения безопасности
По мере расширения базового изображения Ubuntu: 18.04
, были предприняты дополнительные шаги, чтобы добавить меры безопасности с Хозяева
Файл, FAIL2BAN
и clamav
Пакеты предварительно загружены. Это меры предосторожности против нападений, но недостаточно против (не) известных нарушений.
Журнал аналитики
Настоятельно рекомендуется настроить удаленный демон системно -разработки для аналитики журнала с Auditd
Включено, вот наше руководство по использованию таких решений, как Грейлог2 .
Порты
Существует широкий спектр портов TCP, обнаруженных и отображается непосредственно на хост для приложений удаленной отладки, работающих внутри контейнера. По умолчанию только кодовый сервер
выделяется на портах 8443
и Localhost: 8080
.
$ netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 299/node tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN -
Для рабочих нагрузок DEV за пределами Homelab или частного облака за брандмауэрами, использование обратного прокси Nginx с HTTPS и Auth Redirects имеет жизненно важное значение для предотвращения конфиденциального воздействия кода.
Что дальше?
Развертывание VS -кодового сервера в контейнере — отличный способ обеспечить гибкую инфраструктуру разработки в вашей домашней лаборатории или для вашей команды.
В сочетании с VPN Access и всеми вашими пользовательскими настройками, веб -IDEs для будущего удаленного кодирования. Он быстро масштабируется, заставляет вас кодировать намного быстрее и на любом устройстве.
Обязательно зарегистрируйте GitHub Репозиторий, где мы предоставили полные образцы кода, которые можно использовать для развертывания вашего собственного кодовый сервер
в считанные минуты.
Я использовал его в качестве основной среды разработки и после настройки VSCODE
Настройки и расширения, нет возвращения. Ускорение компиляции кода на специальном сервере стоит того, чтобы изменить.
Дайте мне знать, если вам нравится эта настройка Homelab и что вы думаете!
Оригинал: «https://dev.to/quantone/how-to-run-vs-code-as-a-container-for-remote-development-2ng3»