Docker--部署golang的web项目+gin+postgres

这里使用的docker是window的,在本地进行的

docker的建议

1.一个容器只运行一个进程
应该保证在一个容器中只运行一个进程。将多个应用解耦到不同容器中,保证了容器的横向扩展和复用。例如 web 应用应该包含三个容器:web应用、数据库、缓存。
2.使用多阶段构建
在 Docker 17.05 以上版本中,你可以使用 多阶段构建 来减少所构建镜像的大小。
如果容器互相依赖,你可以使用 Docker 自定义网络 来把这些容器连接起来。

准备postgres服务

获取posgres镜像

dockerHub
我这里只用最新的版本

docker pull postgres

运行容器

POSTGRES_PASSWORD
在第一次运行的时候就要输入,类似于初始化密码

dockerHub–> 由initdb脚本在初始容器启动期间设置。

docker run -d \
    --name pg-test \
    -e POSTGRES_PASSWORD=abcdef \
    -v /custom/mount:/var/lib/postgresql/data \
    -p 5432:5432
    postgres

容器名字也是要用的

准备golangweb服务

服务的运行IP要写为0.0.0.0

因为用的是gin,如果写为127.0.0.1的话就会出问题,应该是会请求不到接口
在这里插入图片描述

修改项目的postgrs的连接信息

dsn = "host=pg-test port=5432 user=postgres dbname=xxx password=abcdef"

dockerfile

分阶段构建

FROM golang:alpine AS build
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct

RUN mkdir /app
COPY . /app
WORKDIR /app
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -o myRobot
##在调试期间就用了busbox,因为里面有很多命令,可以进入容器进行操作,正式部署就用scratch
FROM busybox as final
COPY --from=build /app/myRobot .
#这里因为项目使用nats需要证书,所以要把这个复制过来,不然nats时连接不上服务的
COPY --from=build /app/xxx.creds .
#这里如果不打开注解的话,那么在运行容器的时候要在docker run ....命令最后加上 "/myRobot"
#CMD ["/myRobot"]

构建

cmd进入dockerfile所在路径

docker build -t robot-server:0.1 .

运行容器

运行下面的命令就会直接进入容器,看见服务打印的东西

docker run --link=pg-test:pg-test --name server -p 8080:8080 robot-server"0.1 /myRobot

使用gitlab的容器镜像库管理镜像

进入某个项目中
在这里插入图片描述
这里有三个命令依次是登录,构建镜像,推送到gitlab,依次执行就可以将镜像推送到gitlab之后就可以在别的主机上pull就可以运行了。感觉应该和自己的dockerHub类似
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值