Go е статично въведен и компилиран език за програмиране с отворен код, който е известен със способността си да улеснява разработването на прост, надежден и високоефективен софтуер. Той намира полезността в изработването на различни приложения, включително уеб приложения, облачни решения, интерфейси на командния ред (CLI) и интригуващо, дори самият Docker е изработен с помощта на Go.
В нашия случай ние изграждаме прост HTTP сървър в Go, който ни позволява да демонстрираме как да изградим и докеризираме приложението с лесни стъпки.
Изисквания:
За да следвате този урок, имате нужда от следните инструменти:
- Инсталиран Go компилатор (изисква се версия 1.21 и по-нова)
- Стартиране на Docker Engine на вашата хост машина
- IDE или текстов редактор за редактиране на приложението Go. Препоръчваме да използвате Visual Studio или Vim
- Интерпретатор на команден ред като Bash, ZSH, PowerShell и др.
След като дадените изисквания са изпълнени, нека продължим и да научим как да създадем приложението.
Изграждане на приложението
Следващата стъпка е да изградим нашето приложение. В нашия случай изграждаме прост HTTP сървър, който отговаря с просто съобщение.
Започнете със създаване на директория за съхранение на проекта Go. Можете да предоставите всяко подходящо име.
$ mkdir go_serverОтидете в директорията и създайте нов файл за съхранение на изходния код. В нашия случай наричаме файла „main.go“, което означава, че файлът е изходен код на Go.
$ докосване main.go
Накрая редактирайте файла и добавете изходния код към приложението, както е показано по-долу:
основен пакетимпортиране (
'fmt'
'net/http'
)
основна функция ( ) {
// обработва входящи заявки
http.HandleFunc ( '/' , функц ( в http.ResponseWriter, r * http.Заявка ) {
// Напишете отговор на клиента
fmt.Fprintf ( в , „От Docker (:“ )
} )
// Стартирайте HTTP сървъра на порт 8080
fmt.Println ( „Сървърът работи на :8080“ )
http.ListenAndServe ( ':8080' , нула )
}
Предишното приложение създава основен HTTP сървър, който се свързва с порт 8080. Сървърът отговаря с основно съобщение, както е дефинирано по-рано.
Тестване на приложението
Преди да докеризираме приложението, нека се уверим, че приложението функционира правилно. Изпълнете следната команда:
$ отидете, стартирайте main.goПредишната команда стартира приложението и връща съобщението, както следва:
Сървърът работи на: 8080След това, за да тествате HTTP сървъра, можете да изпълните командата „curl“, както следва:
$ къдря http: // локален хост: 8080 /Предишната команда трябва да върне съобщението, както следва:
От Docker ( : %Сега можем да продължим и да докеризираме предишното приложение, както е дефинирано в следващите стъпки.
Контейнериране на приложението
Следващите стъпки са обсъждане на това как да се създаде контейнер за приложението. Започваме със създаването на Dockerfile в директорията на проекта.
$ cd go_serverСъздайте файл с име Dockerfile без разширение и го редактирайте с текстов редактор. Този файл ни позволява да дефинираме всички изисквания за нашето приложение, както следва:
$ докосване Докер файл$ защото Докер файл
Добавете конфигурацията, както следва:
ОТ golang: 1.21WORKDIR / ап
КОПИЕ . .
RUN отидете на изграждане на main.go -О основен .
ИЗЛОЖИ 8080
CMD [ './основен' ]
В предишния Dockerfile дефинираме предишните операции за приложението.
- Задайте основното изображение на официалното изображение на Golang версия 1.21.
- Конфигурирайте работната директория вътре в контейнера на „/app“.
- Копираме цялата директория на проекта в контейнера.
- Създайте приложението Go вътре в контейнера.
- Изложете порт 8080, за да разрешите входящ HTTP трафик.
- Задайте командата за стартиране на приложението Go.
Изграждане на Docker изображение
За да изградите изображението за приложението, отворете терминала и отидете до директорията на проекта. След това изпълнете следната команда, за да създадете изображението:
$ sudo изграждане на докер -T go_server_docker.Заменете go_server_docker с името, което искате да присвоите на изображението на приложението.
След успешно изграждане на изображението на Docker, можете да стартирате контейнер, базиран на това изображение със следната команда:
$ докер изпълнение -стр 8080 : 8080 go_server_dockerПредишната команда трябва да съпостави порт 8080 от хост машината към порт 8080 вътре в контейнера.
За да тествате контейнера, изпълнете следната команда:
$ къдря http: // локален хост: 8080Това трябва да отпечата съобщението, което е дефинирано в приложението.
Заключение
В този урок научихме как да създадем основно приложение Go. Научихме също как да контейнеризираме приложението, като дефинираме изискванията в Dockerfile, изградим изображението от контейнера и стартираме контейнера от изображението.