Эта статья была впервые опубликована на 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, используемые в этой главе.
Рекомендуемое чтение
Джин (1): Привет
Джин (2): маршрутизатор маршрутизации
Джин (три): шаблон tmpl
Джин (четыре): проверка отправки формы и привязка модели
Джин (5): подключиться к MySQL
Джин (шесть): загрузка файла
Джин (семь): использование и определение промежуточного программного обеспечения
Джин (8): использование файлов cookie
Джин (9): Создать спокойный интерфейс
Джин (десять): интегрированный чванство
Джин (11) интегрированный ORM-горм
Джин (12) интегрированный JWT