Отправьте двоичный файл веб-проекта Go lang в CloudFoundry

Можем ли мы развернуть/отправить двоичный файл нашего веб-сервиса Go в Cloud Foundry вместо того, чтобы отправлять кодовую базу и выполнять сборку там? Если можем, то как? Я пытался найти что-нибудь связанное, но ничего не нашел.

заранее спасибо


person kamal    schedule 21.02.2017    source источник


Ответы (2)


Можем ли мы развернуть/отправить двоичный файл нашего веб-сервиса GO в CloudFoundry вместо того, чтобы отправлять туда кодовую базу и выполнять сборку?

Да. Вы можете отправить любой двоичный файл, если он скомпилирован совместимым образом и поставляется с любыми библиотечными зависимостями (не включенными в корневую файловую систему). Создание совместимых двоичных файлов часто является сложной задачей, но для приложения Golang я не думаю, что это должно быть так сложно.

Если можем, то как?

Не используйте пакет сборки Go. Он ожидает код и попытается скомпилировать его для вас.

Вместо этого создавайте как обычно, но делайте это на компьютере с Linux, виртуальной машине или с Docker. Для лучшей совместимости используйте систему, которая соответствует стеку на вашей платформе CF (запустите cf stacks, чтобы увидеть). Стек по умолчанию на момент написания статьи — cflinuxfs2, основанный на Ubuntu 14.04 Trusty. Вы также можете использовать образ докера cloudfoundry/cflinuxfs2.

Затем отправьте полученный двоичный файл с помощью пакета сборки двоичных файлов.

https://docs.cloudfoundry.org/buildpacks/binary/index.html

Ex: cf push -b binary_buildpack -c './my_binary_name'

Вам также может понадобиться -p, чтобы указать папку/путь, где находятся ваши двоичные файлы, иначе cf push отправит все из текущего каталога.

person Daniel Mikusa    schedule 22.02.2017

Для Go вы отправляете свои двоичные файлы, а не код, в облачное хранилище, как и любое другое приложение.

Вот пример приложения на Go. В нем показано, как использовать конвейер зала для создания и отправки приложения. Вы можете пропустить аспекты ci/cd. Просто скомпилируйте код и выполните cf push.

Вот еще один пример, который может помочь https://blog.anynines.com/how-to-deploy-a-go-app-on-anynines-and-cloud-foundry/

person K.AJ    schedule 21.02.2017
comment
Поправьте меня, если я ошибаюсь, cf push подталкивает всю кодовую базу и компилирует код в CF, поскольку, в отличие от java, он создает двоичный файл, который зависит от архитектуры и платформы машины, ОС, поэтому, если я скомпилирую на Mac и отправлю этот двоичный файл в CF, как будет это работает? @askX - person kamal; 22.02.2017
comment
перейдите по этой ссылке docs.cloudfoundry.org/devguide/deploy-apps / он говорит, что развертывает всю кодовую базу. - person kamal; 22.02.2017
comment
Возможно, вы путаете промежуточный процесс с компиляцией приложения. В cf push я передаю данные архива (jar, war, zip или расположение папки) и, возможно, пакет сборки для использования. Посторонние файлы и артефакты исключаются из загрузки. Cloud Foundry, как часть промежуточного процесса, будет загружать зависимости времени выполнения по мере необходимости (например, приложения nodejs, он будет загружать пакеты). См. схему процесса подготовки docs.pivotal. io/pivotalcf/1-9/concepts/ - person K.AJ; 22.02.2017
comment
Камаль, говоря о создании бинарного файла, вы можете создавать бинарные файлы для приложений GO на своем Mac для любой платформы. $› OOS=windows go build -o ‹appname›.exe $› OOS=linux go build -o ‹appname› $› OOS=linux go build -o ‹appname_linux› Затем выполните cf push в соответствующем архиве. - person K.AJ; 22.02.2017