Джин (13): кросс-компиляция и развертывание Docker

Go Gin
Джин (13): кросс-компиляция и развертывание Docker

Эта статья была впервые опубликована на Personal WeChat Official Account Code Hunting Station и Personal Blog.ISLAND

Он был обновлен до тринадцатого выпуска один за другим, и основные моменты знаний были почти объяснены, поэтому последний шаг — развертывание проекта. Здесь мы разворачиваем проект на сервер Linux Docker. Очки знаний в этом вопросе включаютперекрестная компиляцияиРазвертывание докера.

👻 Кросс-компиляция

Что такое кросс-компиляция? Кросс-редактирование просто означает, что одна платформа генерирует исполняемую программу для другой платформы. Большинство наших сред разработки - это windows или macOS.Конечно, есть и пользователи linux (на самом деле для разработки на windows больше рекомендуется использовать WSL), а наши онлайн-серверы вообще linux, поэтому нам нужно кросс-компилировать проект. Кросс-компиляция в Go относительно проста, и нам нужно только сделать простые настройки для завершения кросс-компиляции.

Откройте корневой каталог нашего проекта, откройте терминал и настройте GOOS и GOARCH.

Скомпилируйте в linux программы под windows.

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -o out/linux/gin_hello .

здесьgo build -o out/linux/gin_helloЭто означает вывод скомпилированного файла в out/linux, а скомпилированный бинарный файл называется gin_hello.

Я написал команду.batЭто удобно, и вам не нужно каждый раз выполнять и вставлять эти несколько строк команд.

Создайте новый проект в корневом каталоге проектаbuild.bat, а затем запустите файл. Конечно, многие проекты или проекты используютMakefileсоставление

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -o out/linux/gin_hello .
exit

После выполнения файла gin_hello появится в папке out/linux.

Вот мы и завершили кросс-компиляцию, и скомпилированная программа представляет собой исполняемый файл под linux.

🐳 Установите Докер

Здесь используется операционная система Centos 7, и перед установкой следует обновить исходный код программного обеспечения.sudo yum update, а затем добавьте репозитории Docker.

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Обновите источник программного обеспечения еще разsudo yum update, и, наконец, мы можем установить наш докер

sudo yum install docker-ce

добавить в загрузку

sudo systemctl enable docker

запустить докер

sudo systemctl start docker

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

🚫 ПредупреждениеПриведенный ниже метод предназначен только для учебной демонстрации.Не используйте этот метод в производственной среде. Этот метод имеет недостатки, которые открывают порт Docker для общедоступной сетевой среды, и любой может выполнить развертывание в Docker. Если вам нужно открыть удаленный порт в рабочей среде, вам необходимо настроить метод аутентификации авторизации, я не буду его здесь представлять.

В Centos 7 внесите изменения в следующие файлы

vim /usr/lib/systemd/system/docker.service

Найдите начало ExecStart, добавьте и измените его следующим образом.

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock

На этом этапе перезапуск сервера или перезапуск Docker завершает удаленное подключение к Docker.

🐬 Установить базу данных

Сначала мы должны установить базу данных MySQL на докеры. Во-первых, выполните нашу команду поиска, чтобы узнать, сможем ли мы найти информацию, связанную с MySQL.docker search mysql.

После подтверждения того, что MySQL может быть найден, вы можете завершить извлечение, выполненное MySQL, с помощью командыdocker pull mysqlИзвлеките образ MySQL. В настоящее время версия MySQL не указана, и для нас будет выбрана последняя версия MySQL.

После вытягивания пройтиdocker iamgesГлядя на все текущие зеркала, здесь у нас есть только один MySQL.

Я приобрел образ MySQL, поэтому следующим шагом будет создание контейнера из образа.

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=1234 -d mysql

На этом этапе наш контейнер MySQL успешно создан и запущен, и мы устанавливаем пароль MySQL как 1234 и порт как 3306.

docker exec -it mysql /bin/bash

Мы указываем терминал для MySQL для создания базы данных.

входитьmysql -u root -pВведите пароль после возврата каретки1234, чтобы войти в базу данных. входитьcreate database ginhelloЭто то же самое, что и имя нашей локальной базы данных.

На этом наша операция на сервере завершена.

🔗Goland подключается к Docker и разворачивает проект

Прежде всего, нам нужно внести простые изменения в наш код. Мы запускали проект в режиме DEBUG раньше, и теперь мы собираемся выйти в онлайн. Нам нужно изменить наш режим запуска.main.goбыть добавленным в.

gin.SetMode(gin.ReleaseMode)

На этом этапе мы можем выполнить скрипт build.bat, написанный во время нашей кросс-компиляции, и будет сгенерирован новый исполняемый файл Linux.

Создайте новый Dockerfile и напишите Dockerfile

FROM alpine

WORKDIR /web/gin

COPY ./out/linux/. .

CMD ./gin_hello

Кратко поговорим об этих значениях, вытащите образ alpine, который по сути является самым маленьким linux, укажите наш WORKDIR, скопируйте сгенерированный нами исполняемый файл linux в WORKDIR и запустите проект.

Конечно, этого недостаточно, когда мы закончим писать файл, в первой строке появится кнопка запуска.

Нажмите кнопку «Выполнить», выберитеEdit 'Dockerfile'

Появится следующий интерфейс. Щелкните многоточие в ①, появится следующий интерфейс, настройте Docker, заполните наш IP-порт в ② 2375. После завершения настройки подождите, чтобы увидеть, успешно ли установлено соединение в ③. В противном случае ссылка не работает, проверьте правильность вышеуказанных шагов. Нажмите OK, когда закончите.

Завершите настройку Docker, а затем выполните сопоставление портов.

Порт хоста представляет порт хоста хоста, который является портом нашего сервера, а порт контейнера представляет порт нашего контейнера. Поскольку проект gin выполняется в контейнере, а порт запуска — 8080, мы получаем доступ к порту 80 хоста через сопоставление портов и сопоставляем порт 8080.

После выполнения вышеуказанных настроек вы можете нажать, чтобы запустить наш Dockerfile.

Текущий прогресс мы можем найти в Службе Голанда.

Дождитесь завершения, откройте публичный IP-адрес сервера.

Вы можете увидеть код, который мы написали ранее.

На этом мы закончили развертывание.

✍Резюме

Благодаря кросс-компиляции, установке Docker, установке образа Docker и запуску контейнера, а также развертыванию проекта Gin в этой главе процесс развертывания проекта онлайн через Docker завершен.

👨‍💻 Код для этой главы

Код этой главы может использовать код любой предыдущей главы, но код загружен здесь, включая Dockerfile и build.bat, используемые в этой главе.

Github

Рекомендуемое чтение

Джин (1): Привет
Джин (2): маршрутизатор маршрутизации
Джин (три): шаблон tmpl
Джин (четыре): проверка отправки формы и привязка модели
Джин (5): подключиться к MySQL
Джин (шесть): загрузка файла
Джин (семь): использование и определение промежуточного программного обеспечения
Джин (8): использование файлов cookie
Джин (9): Создать спокойный интерфейс
Джин (десять): интегрированный чванство
Джин (11) интегрированный ORM-горм
Джин (12) интегрированный JWT

Личный публичный аккаунт WeChat