Научите како да користите Доцкер за ефикасно паковање и имплементацију Го апликација, чинећи их преносивим и лаким за управљање.
Доцкер је најпопуларнија технологија контејнеризације због своје једноставности и лакоће коришћења. Доцкер ублажава стрес око проблема са преносивости у развоју и дистрибуцији софтвера. Можете да примените своје доцкер контејнере на већину добављача услуга у облаку.
Контејнерисање ваших Го апликација помоћу Доцкер-а може вам помоћи да обезбедите доследну и поуздану примену у различитим окружењима. Можете да примените своје Го апликације у различитим окружењима као што су развој, постављање и производња. Доцкер контејнери су лагани и заузимају мање простора од традиционалних виртуелних машина. Ово вам може уштедети новац на трошковима хостинга, а може и убрзати ваше примене.
Подешавање једноставног веб сервера у Го
Го стандардна библиотека садржи пакете који су вам потребни за постављање једноставног веб сервера.
Прво увезите хттп, Пријава, и јсон пакети. Користићете
Го'с хттп пакет да подесите сервер и ДОБИТИ захтевати крајњу тачку. Тхе Пријава пакет за евидентирање могућих грешака на вашој конзоли. Тхе јсон пакет за кодирање структуре у ЈСОН за крајњу тачку АПИ-ја.увоз (
"кодирање/јсон"
"Пријава"
"нет/хттп"
)
Можете кодирати инстанцу структуре као ЈСОН за клијента као одговор на основу валидности захтева на следећи начин:
тип Порука струцт {
Одговор низ`јсон:"одговор"`
Опис низ`јсон:"опис"`
}
Функција руковаоца би вратила успешну поруку клијенту ако је захтев до крајње тачке а ДОБИТИ захтев.
// доцкерТестЕндпоинт рукује АПИ крајњом тачком за тестирање Доцкер повезаности
фунцдоцкерТестЕндпоинт(писац хттп. РеспонсеВритер, захтев *хттп. Захтев) {// Подесите заглавље одговора да указује на ЈСОН садржај
писац. Хеадер().Сет("Тип садржаја,""апплицатион/јсон")// Ако је метод захтева ГЕТ
ако захтев. Метод == "ДОБИТИ" {// Подесите код статуса одговора на 200 ОК
писац. ВритеХеадер (хттп. Статус ОК)// Креирајте структуру поруке за успешан одговор
порука := Порука{
Одговор: "Успешан",
Опис: „Успешно сте погодили АПИ крајњу тачку“ +
„Из вашег Доцкер контејнера“,
}
// Кодирајте поруку као ЈСОН и пошаљите је као одговор
ерр := јсон. НевЕнцодер (писач).Енцоде(&мессаге)
ако ерр != нула {
повратак
}
} друго {// Ако метод захтева није ГЕТ
// Подесите код статуса одговора на 400 Лош захтев
писац. ВритеХеадер (хттп. СтатусБадРекуест)// Креирајте структуру поруке за лош одговор на захтев
порука := Порука{
Одговор: "Лош захтев",
Опис: "Успешно сте погодили АПИ крајњу тачку са вашег " +
„Доцкер контејнер, али сте упутили лош захтев“,
}
// Кодирајте поруку као ЈСОН и пошаљите је као одговор
ерр := јсон. НевЕнцодер (писач).Енцоде(&мессаге)
ако ерр != нула {
повратак
}
}
}
Функцију руковаоца подешавате у главној функцији са рутом као /api/docker/go. Тхе доцкерТестЕндпоинт функција руковаоца потврђује да је захтев руковаоцу ГЕТ захтев. Ако је то ГЕТ захтев, он кодира инстанцирани Порука струцт инстанце клијенту на основу статуса захтева.
Ево како можете да монтирате функцију руковаоца на руту и подесите сервер да ради на порту 8080:
фунцглавни() {
// Регистровати функцију руковаоца 'доцкерТестЕндпоинт'
// за обраду захтева за „/апи/доцкер/го“ УРЛ.
хттп. ХандлеФунц("/апи/доцкер/го", доцкерТестЕндпоинт)
// Покрени ХТТП сервер и слушај долазне захтеве на порту 8080.
ерр := хттп. Слушај и служи (":8080", нула)
ако ерр != нула {
Пријава. Фаталн(„Дошло је до грешке са сервером:“, грешка)
}
}
Тхе главни функција је улазна тачка сервера, која слуша порт 8080. Тхе ХандлеФунц метода монтира руте на функцију руковаоца. Тхе ЛистенАндСерве метода покреће сервер на наведеном локалном порту домаћина 8080.
Први кораци Контејнеризација ваших Го апликација помоћу Доцкер-а
Након инсталирања и подешавања Доцкер-а, требаће вам Доцкер датотека под називом Доцкерфиле да бисте креирали и направили Доцкер слику за вашу Го апликацију. Одредићете команде за основну слику и команде за копирање датотека, додавање радног директоријума и покретање апликације у Доцкерфиле-у.
Покрените ову команду у терминалу вашег радног простора да бисте креирали Доцкерфиле.
додирните Доцкерфиле
Навест ћете команде за прављење ваше Доцкер слике у Доцкерфиле-у.
Ако постоје датотеке које желите да одвојите од Доцкер слике, можете користити а .доцкеригноре фајл. Тхе .доцкеригноре датотеке раде тачно као .гитигноре фајлови.
додир .доцкеригноре
Затим ћете навести команде за изградњу у вашем Доцкерфиле-у да бисте своје апликације спремили у контејнер.
Дефинисање команди у Доцкерфиле-у
Доцкер фајлови су прилагодљиви на основу спецификација вашег пројекта. Дефинисаћете команде за прављење основне слике за прављење апликације.
Ево примера садржаја Доцкерфиле-а који гради веб сервер изнад:
# Користите основну слику Голанга
ИЗ голанг: најновије# Поставите радни директоријум унутар контејнера
ВОРКДИР /app# Копира све датотеке у локалном директоријуму у радни директоријум у контејнеру
ЦОПИ. .# Преузмите зависности Го модула
ТРЦАТИ иди преузимање мода# Направите апликацију Го
ТРЦАТИ иди направи -о апликацију
# Подесите улазну тачку за апликацију
УЛАЗНА ТАЧКА ["./апликација"]
Доцкерфиле користи голанг: најновије основну слику, да бисте направили апликацију након подешавања радног директоријума на /app.
Доцкерфиле копира датотеке са ЦОПИ команду и преузима зависности са ТРЦАТИ команда.
Датотека наводи операцију изградње и покретања са ТРЦАТИ команду, а затим поставља наредбу да се покрене када контејнер почне са ЦМД команда.
Сачувајте Доцкерфиле у истом директоријуму као и ваш го.мод и маин.го фајлови; затим покрените ову команду да бисте направили Доцкер слику из овог Доцкер фајла:
доцкер буилд -т ГолангТуториал .
Горња команда ће креирати Доцкер слику са ознаком голангтуториал. Можете покренути контејнер са овом командом:
доцкер рун -п 8080:8080 голангтуториал
Команда мапира порт 8080 из контејнера у порт 8080 на локалном хосту рачунара. Можете да затражите сервер који ради у Доцкер контејнеру са хост машине.
Ево резултата из слање ЦУРЛ захтева серверу, овај пут ради на Доцкер-у:
Можете користити Доцкер Цомпосе за оркестрацију контејнера
Доцкер Цомпосе је алатка коју можете користити за оркестрирање (рад са многим) Доцкер контејнера. Доцкер Цомпосе вам омогућава да дефинишете апликацију са више контејнера у једној ИАМЛ датотеци. Можете покренути и управљати читавом апликацијом помоћу једне наредбе.
Можете да користите Доцкер Цомпосе за примену и управљање сложеним контејнерским апликацијама. Доцкер Цомпосе поједностављује управљање аутоматизованим и доследним применама.