Рубрики
Uncategorized

Как запустить VS -код в качестве контейнера для удаленной разработки

Запустите свой собственный контейнер сервера кода с предварительно загруженными инструментами DEV (SDK, NPM -пакеты, CLIS и т. Д.) Для … с меткой VSCODE, Docker, производительности, DevOps.

Запустите свой собственный Кодовый сервер Контейнер с предварительно загруженными инструментами 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»