Docker и серверы на основе Go: Ваш первый шаг в мир контейнеризации и разработки

На список статей
Blog image

Защитите свои сайты с My-Sites-Guard.com!
Сервис обеспечивает надежную защиту ваших веб-ресурсов: мониторинг доступности сайта, контроль валидности сертификатов, а также возможность собирать и анализировать логи работы сервера. My-Sites-Guard.com — всё для сохранности вашего сайта и спокойствия в работе!

Что такое Docker и почему он важен?

Docker — это платформа для контейнеризации, которая позволяет упаковать приложение вместе со всеми его зависимостями в один контейнер. Это делает приложение легко переносимым между разными машинами и средами.

Пример: Представьте, что вы разработали сервер на Go, который идеально работает на вашем компьютере. Однако, когда вы переносите его на сервер в облаке, он начинает «капризничать» из-за отсутствия каких-то библиотек или другой версии Go. Docker решает эту проблему, создавая изолированную среду, где всё работает предсказуемо.

  1. Когда вы используете Docker, вы создаете образ, который включает в себя ваше приложение и всё необходимое для его работы: от системных библиотек до настроек окружения.
  2. Запуская образ, вы получаете контейнер — компактную и изолированную среду, которая делает ваш код стабильным и переносимым.
  3. Благодаря Docker вы экономите время, избегая множества проблем, связанных с настройкой и совместимостью окружений.

Создание первого сервера на Go

Теперь давайте создадим простой сервер на Go, который отвечает «Hello, Docker!» на HTTP-запрос.

Пример: Начнем с самого кода сервера. Откройте ваш текстовый редактор или IDE и создайте файл с именем main.go:

package main

import (
   "fmt"
   "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
   fmt.Fprintln(w, "Hello, Docker!")
}

func main() {
   http.HandleFunc("/", handler)
   fmt.Println("Server is running on port 8080...")
   http.ListenAndServe(":8080", nil)
}
  1. В этом коде мы создали сервер, который запускается на порту 8080. Функция handler обрабатывает все запросы и возвращает сообщение «Hello, Docker!».
  2. Сохраните файл и убедитесь, что у вас установлен Go. Для проверки введите в терминале команду go version. Если Go установлен, запустите сервер с помощью команды go run main.go.
  3. Теперь ваш сервер доступен по адресу http://localhost:8080. Проверьте это, открыв браузер или воспользовавшись инструментом вроде Postman.

Как запустить сервер на Go в Docker

После того как вы убедились, что сервер работает локально, пора поместить его в контейнер. Это сделает его удобным для развертывания на любом сервере.

Пример: Сначала создадим Dockerfile — файл, который описывает, как собрать образ для вашего приложения. Создайте файл с именем Dockerfile в том же каталоге, где находится main.go, и добавьте следующий текст:

# Используем базовый образ с Go
FROM golang:1.20

# Устанавливаем рабочую директорию внутри контейнера
WORKDIR /app

# Копируем все файлы в контейнер
COPY . .

# Собираем приложение
RUN go build -o server .

# Указываем команду для запуска
CMD ["./server"]
  1. В первой строке мы выбираем базовый образ с Go версии 1.20. Это официальный образ, который включает всё необходимое для работы Go.
  2. Затем мы указываем рабочую директорию внутри контейнера, куда будем копировать наши файлы.
  3. После этого Dockerfile говорит, что нужно собрать сервер с помощью команды go build, а затем запустить его.

Пример: Теперь соберем образ и запустим контейнер. В терминале выполните команды:

docker build -t go-server .
docker run -p 8080:8080 go-server
  1. Команда docker build создаёт образ и присваивает ему имя go-server.
  2. Команда docker run запускает контейнер и делает порт 8080 доступным для внешнего мира. Теперь сервер работает в контейнере Docker.
  3. Откройте браузер или отправьте запрос на http://localhost:8080. Вы увидите то же сообщение «Hello, Docker!», только теперь оно генерируется сервером в контейнере.

Комментарии

Пока нет комментариев

Добавить комментарий