Docker私有仓库搭建&Go服务部署

前言

最近有个朋友在写一个新的项目, 想用docker搭建一套测试服务, 问我有没有什么坑需要注意的…其实挺简单的, 也没啥坑, 注意一下时区问题和docker配置就好了

大体流程

搭建私有仓库

docker pull registry
docker run -d -v /data/registry:/var/lib/registry -p 5000:5000  镜像Id

这样启动确认没问题就可以了, 然后就是配置的事, docker在1.3之后交互默认使用https, 比如你的机器ip是127.0.0.1, 那么你需要在客户端的docker配置里面信任这个私有仓库的地址, 配置文件地址linux是/etc/docker/daemon.json, 加上

{ "insecure-registries":["127.0.0.1:5000"]}

mac和windows就直接打开配置改就行了
Docker私有仓库搭建&Go服务部署_第1张图片
这样私有镜像服务就搭好了

制作自己的服务镜像

服务端用的是golang, 包管理是go mod, 然后直接找官方发布的镜像就可以了, 下面都有官方打包实例
Docker私有仓库搭建&Go服务部署_第2张图片
然后需要注意一下时区问题, 这个我之前发过博文, 时区不同可能会存在差8小时的问题, 下面给一个简单实例

Dockerfile
# 设置基础镜像
FROM golang:1.12.6-alpine

# 作者描述信息
LABEL maintainer="飞啊飞"

# 使用国内源
RUN echo -e http://mirrors.ustc.edu.cn/alpine/v3.7/main/ > /etc/apk/repositories

# copy当前目录的文件到镜像里面的工作目录目录下
COPY ./config/test.json /demo/   // 配置文件
COPY server /demo/               // 打包的linux二进制文件

#设置东八区,北京时间
ENV TZ=Asia/Shanghai
RUN apk add --no-cache tzdata && ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 指定路径
WORKDIR /demo/

# 执行命令  这里给文件增加执行权限
RUN ["chmod", "+x", "/demo/server"]

# 容器入口, 执行命令
CMD ["./server", "-config", "test.json"]
打包命令

像这种能偷懒的事当然是写个脚本啦
mac和linux的话就写个shell脚本

#!/usr/bin/env bash

Version=v1.0.1
serviceName="127.0.0.1:5000/server"

// go打包成linux可执行文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o server
// 制作镜像(千万别忽略最后的一个点)
docker build -t ${serviceName}:${Version} .
// 提交到私有仓库
docker push ${serviceName}:${Version}

window的就bat文件

@echo off
chcp 65001
SET version=1.0.1
SET serviceName="127.0.0.1:5000/server"
set GOARCH=amd64
set GOOS=linux

go build -o server
docker build  -t  %serviceName%:v%version% .
docker push %serviceName%:v%version%

服务器部署

一样的shell脚本

#!/usr/bin/env bash

serviceName="127.0.0.1:5000/server"

echo "删除当前运行容器"
docker rm -f demo_server

echo "删除当前镜像"
docker rmi -f $(docker images |grep "${serviceName}")

echo "拉取镜像版本 $1"
docker pull ${serviceName}:v$1

echo "启动新版本容器"
docker run -d  -p "8888:8888" --name=demo_server ${serviceName}:v$1

echo "启动完成"

这样就ok了, 大功告成
查看日志

docker logs -f --tail=20 demo_server

完结

这个只是搭个简单的测试服务, 生产环境的话还是建议用阿里云的镜像服务, 比较方便管理和服务部署监控

你可能感兴趣的:(Docker,linux,Go语言学习笔记)