Как выложить Go-приложение в интернет
Обычно, чтобы показать миру Go-приложение, нужно арендовать сервер, собрать на нём бинарь, поставить рядом nginx как прокси, получить SSL-сертификат и следить, чтобы процесс не падал. Go удобен тем, что весь проект компилируется в один исполняемый файл, но возня вокруг сервера от этого никуда не девается.
Netrun убирает эту часть: вы загружаете исходный код, мы сами видим, что это Go, собираем проект и выдаём публичную ссылку с HTTPS (защищённое соединение, замочек в браузере). Ни сервера, ни nginx, ни ручного сертификата — ниже о том, как пройти путь от папки с кодом до рабочей ссылки.
Проверьте, что в корне есть go.mod
Файл go.mod в корне проекта перечисляет зависимости и говорит Netrun, что перед ним Go-приложение. Папку с зависимостями (например, vendor) класть не нужно — библиотеки мы подтянем сами по go.mod при сборке.
Читайте порт из переменной окружения
Если у вас веб-сервис, он должен слушать тот порт, который задаёт Netrun через переменную окружения PORT, а не прописанный в коде намертво. На практике это значит взять порт через os.Getenv("PORT") и слушать именно его — тогда мы автоматически пробросим наружу нужный адрес. Захардкоженный порт сломал бы публикацию.
Загрузите код
Откройте Netrun и принесите проект одним из двух способов: ZIP-архивом с исходниками или импортом из GitHub-репозитория, в том числе приватного. Достаточно самого кода с go.mod — собирать бинарь у себя и ставить Go где-либо не нужно, всё происходит у нас.
Укажите секреты, если они есть
Если приложение ходит во внешний сервис или базу данных, ключи API, токены и строку подключения мы спросим при настройке. Они подставятся в переменные окружения и не будут лежать в коде — читайте их из окружения через os.Getenv так же, как порт.
Дождитесь сборки и заберите ссылку
Netrun сам соберёт проект и поднимет его. Логи и статус публикации видны в кабинете в реальном времени, так что вы сразу заметите, если что-то пошло не так. Когда всё готово, вы получите публичную ссылку с HTTPS — её можно открывать и отправлять кому угодно.
Готово: ваше Go-приложение доступно в интернете без аренды сервера и настройки SSL. На бесплатном тарифе доступен один проект, и веб-сервис на нём засыпает при простое и просыпается по запросу — первый ответ после паузы будет чуть медленнее. Если приложение должно отвечать без задержек постоянно, подойдёт платный тариф с работой без простоев, а если проектов нужно больше — можно докупить дополнительные слоты. Попробовать Netrun.