gin+docker部署Golang应用

使用gin编写Go的后端程序,然后使用docker打包成镜像并在我们的阿里云ECS上进行部署

编写Go后端程序

项目目录如下:

1
2
3
4
go-web
├── go.mod
├── main.go
├── Dockerfile

main.go文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package main

import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)

/**
* @Author: yirufeng
* @Date: 2021/7/10 9:04 下午
* @Desc:
**/

type User struct {
Username string `json:"username"`
}

func main() {
engine := gin.Default()

engine.GET("/", func(c *gin.Context) {
startTime := time.Now()

c.JSON(http.StatusOK, gin.H{
"method": http.MethodGet,
"elapsedTime/ms": time.Since(startTime).Milliseconds(),
})
})

engine.POST("/", func(c *gin.Context) {
startTime := time.Now()

var u User
err := c.BindJSON(&u)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"error": err.Error(),
})
return
}

c.JSON(http.StatusOK, gin.H{
"method": http.MethodPost,
"elapsedTime/ms": time.Since(startTime).Milliseconds(),
"username": u.Username,
})
})

engine.Run(":8081")
}
go

centos7安装docker

系统要求:docker支持64位Centos7,并且要求内核版本(查看Linux系统内核版本:uname -r)不低于3.10

卸载旧版本

安装docker

卸载旧版本

旧版本的docker称为docker或docker-engine,使用如下命令卸载旧版本

1
sudo yum remove docker docker-common docker-selinux docker-engine

安装方式一:使用yum安装

1
sudo yum install docker-ce

如果执行之后返回的是没有可用软件包,此时我们需要安装必要的软件依赖以及更新增加docker-ce yum源

1
2
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
执行完这两条命令之后我们便可以重新执行`sudo yum install docker-ce`进行安装

安装方式二:使用脚本安装

在测试或开发环境中docker官方为了简化安装流程,提供了一套便捷的安装脚本,centos系统上可以使用这套脚本进行安装

1
2
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
执行完这个命令之后,系统会自动将一切工作准备好,并把docker ce的Edge版本安装在系统中
docker

ubuntu18.04 安装docker

环境

本操作基于如下环境:

  1. ubuntu 18.04

使用ubuntu安装docker

卸载之前的docker

  1. sudo apt-get remove docker docker-engine docker.io containerd runc

安装Docker

  1. sudo apt-get update
  2. sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common :安装依赖包
  3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - :添加 Docker 的官方 GPG 密钥
  4. sudo apt-key fingerprint 0EBFCD88 :验证您现在是否拥有带有指纹的密钥
  5. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" :设置稳定版仓库

安装 Docker Engine-Community

  1. sudo apt-get update :更新
  2. sudo apt-get install docker-ce :安装最新的Docker-ce
  3. 启动:
    1. sudo systemctl enable docker
    2. sudo systemctl start docker

测试

  1. sudo docker run hello-world
docker

docker实现mysql的主从复制

通过docker中的容器隔离机制我们实现mysql的主从复制,从而避免了单点故障

  1. 主从复制部署
  2. docker命令参考
mysql