1 安装docker
2 安装docker-compose
直接在终端运行下面这行代码
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose# 如果上面这条不行,就运行下面这条之后再试chmod +x /usr/local/bin/docker-compose
可以用docker-compose —version确认是否安装正确,如果显示版本,则安装完成
这步出错后记得看7,清除缓存之后重新操作
3 准备Go后端文件
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,并提示报错信息
6 后续—nginx反向代理
为了方便前端的使用,在网站的配置文件中,加入下面这条,方便前端的路径访问
location /go/ {
proxy_pass http://127.0.0.1:8088/api/V1/;
}
7 补充—清除数据
服务器上的docker数据卷无法通过删除容器清楚,需要运行
docker volume rm 卷名
# 例:docker volume rm yuquey_pg-data
