Go — это статически типизированный и компилируемый язык программирования с открытым исходным кодом, известный своей способностью облегчать разработку простого, надежного и высокоэффективного программного обеспечения. Он находит применение в создании разнообразных приложений, включая веб-приложения, облачные решения, интерфейсы командной строки (CLI) и, что интересно, даже сам Docker создан с использованием Go.
В нашем случае мы создаем простой HTTP-сервер на Go, который позволяет нам продемонстрировать, как создать и докеризовать приложение за простые шаги.
Требования:
Чтобы следовать этому руководству, вам потребуются следующие инструменты:
- Установленный компилятор Go (требуется версия 1.21 и выше)
- Запуск Docker Engine на вашем хост-компьютере
- IDE или текстовый редактор для редактирования приложения Go. Мы рекомендуем использовать Visual Studio или Vim.
- Интерпретатор командной строки, такой как Bash, ZSH, PowerShell и т. д.
Удовлетворив заданные требования, давайте продолжим и научимся создавать приложение.
Создание приложения
Следующий шаг — создание нашего приложения. В нашем случае мы создаем простой HTTP-сервер, который отвечает простым сообщением.
Начните с создания каталога для хранения проекта Go. Вы можете указать любое подходящее имя.
$ мкдир go_serverПерейдите в каталог и создайте новый файл для хранения исходного кода. В нашем случае мы называем файл «main.go», что означает, что файл представляет собой исходный код Go.
$ трогать main.go
Наконец, отредактируйте файл и добавьте исходный код в приложение, как показано ниже:
пакет основнойИмпортировать (
'ФМТ'
'сеть/http'
)
главная функция ( ) {
// обрабатывать входящие запросы
http.HandleFunc ( '/' , функция ( В http.ResponseWriter, г * http.Запрос ) {
// Напишите ответ клиенту
fmt.Fprintf ( В , 'Из Докера (:' )
} )
// Запустите HTTP-сервер на порту 8080
fmt.Println ( «Сервер работает на: 8080» )
http.ListenAndServe ( ':8080' , ноль )
}
Предыдущее приложение создает базовый HTTP-сервер, который привязывается к порту 8080. Сервер отвечает базовым сообщением, как было определено ранее.
Тестирование приложения
Прежде чем докционировать приложение, давайте убедимся, что оно работает правильно. Выполните следующую команду:
$ иди беги main.goПредыдущая команда запускает приложение и возвращает сообщение следующего вида:
Сервер работает на: 8080Далее, чтобы протестировать HTTP-сервер, вы можете запустить команду «curl» следующим образом:
$ локон http: // локальный хост: 8080 /Предыдущая команда должна вернуть сообщение следующим образом:
Из Докера ( : %Теперь мы можем продолжить и закрепить предыдущее приложение, как определено в следующих шагах.
Контейнеризация приложения
Следующим шагом будет обсуждение того, как создать контейнер для приложения. Начнем с создания Dockerfile в каталоге проекта.
$ CD go_serverСоздайте файл Dockerfile без расширения и отредактируйте его в текстовом редакторе. Этот файл позволяет нам определить все требования для нашего приложения следующим образом:
$ трогать Докерфайл$ потому что Докерфайл
Добавьте конфигурацию следующим образом:
ИЗ Голанга: 1.21РАБОЧИЙ ДИАПАЗОН / приложение
КОПИРОВАТЬ. .
RUN иди собери main.go -О основной .
РАЗОБЛАЧАТЬ 8080
КМД [ './основной' ]
В предыдущем файле Dockerfile мы определяем предыдущие операции для приложения.
- Установите в качестве базового образа официальный образ Golang версии 1.21.
- Настройте рабочий каталог внутри контейнера как «/app».
- Копируем всю директорию проекта в контейнер.
- Создайте приложение Go внутри контейнера.
- Откройте порт 8080, чтобы разрешить входящий HTTP-трафик.
- Задайте команду для запуска приложения Go.
Создание образа Docker
Чтобы создать образ для приложения, откройте терминал и перейдите в каталог проекта. Затем выполните следующую команду для создания образа:
$ судо сборка докера -т go_server_docker.Замените go_server_docker именем, которое вы хотите присвоить образу приложения.
После успешной сборки образа Docker вы можете запустить контейнер на основе этого образа с помощью следующей команды:
$ запуск докера -п 8080 : 8080 go_server_dockerПредыдущая команда должна сопоставить порт 8080 хост-компьютера с портом 8080 внутри контейнера.
Чтобы протестировать контейнер, выполните следующую команду:
$ локон http: // локальный хост: 8080Это должно напечатать сообщение, определенное в приложении.
Заключение
В этом уроке мы узнали, как создать базовое приложение Go. Мы также научились помещать приложение в контейнер, определяя требования в Dockerfile, создавая образ из контейнера и запуская контейнер из образа.