1 安装docker

直接进入宝塔商店下载就行
image.png

2 安装docker-compose

直接在终端运行下面这行代码

  1. curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  2. # 如果上面这条不行,就运行下面这条之后再试
  3. chmod +x /usr/local/bin/docker-compose

可以用docker-compose —version确认是否安装正确,如果显示版本,则安装完成

这步出错后记得看7,清除缓存之后重新操作

3 准备Go后端文件

在文件里直接放入完整文件
image.png

4 配置docker相关文件

dockerfile

# 镜像系统
FROM golang:alpine

# 定义路径
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct

# 进入容器时的路径
WORKDIR /build
COPY . .

RUN go build -o app .

# 声明服务端口
EXPOSE 8088

# 启动容器时运行的命令
CMD ["/build/app"]

database.go

// 以postgres数据库为例
const postgresHost = "xhw_postgres"

var err error
psgInfo := fmt.Sprintf("host=%s user=%s port=%s password=%s dbname=%s sslmode=disable",
                       postgresHost, "postgres", "5432", "pgsql1101", "postgres")
DB, err = gorm.Open("postgres", psgInfo)
DB.LogMode(true)
if err != nil {
    panic("failed to connect database, err:" + err.Error())
}

docker-compose.yml

version: "3.7"

services:
pg:
image: postgres:alpine  # 基础镜像
container_name: "xhw_postgres"  # 容器名称
ports:
- "5432:5432"
volumes:
- pg-data:/var/lib/postgresql/data  # 数据卷挂载
environment:
- POSTGRES_DB=postgres  # 数据库名
- POSTGRES_USER=postgres  # 数据库用户
- POSTGRES_PASSWORD=pgsql1101  # 数据库密码
go:
container_name: "xhw_go"
build: .  # Dockerfile文件目录
restart: always
ports:
- "8088:8088"
links:
- pg
depends_on:
- pg

volumes: # 数据卷
  pg-data:

注意:docker-compose.yml里的数据库信息与database.go里的信息需一致

5 创建容器

在后端文件夹目录下打开终端,运行

docker-compose up

这个过程比较长,如果正常运行完,会显示监听0.0.0.0:8088(示例)。如果运行报错,会显示exit code 2,并提示报错信息
image.png

6 后续—nginx反向代理

为了方便前端的使用,在网站的配置文件中,加入下面这条,方便前端的路径访问

location /go/ {
      proxy_pass http://127.0.0.1:8088/api/V1/;
    }

image.png

7 补充—清除数据

服务器上的docker数据卷无法通过删除容器清楚,需要运行

docker volume rm 卷名
# 例:docker volume rm yuquey_pg-data