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就直接打開配置改就行了
在這裏插入圖片描述
這樣私有鏡像服務就搭好了

製作自己的服務鏡像

服務端用的是golang, 包管理是go mod, 然後直接找官方發佈的鏡像就可以了, 下面都有官方打包實例
在這裏插入圖片描述
然後需要注意一下時區問題, 這個我之前發過博文, 時區不同可能會存在差8小時的問題, 下面給一個簡單實例

Dockerfile
# 設置基礎鏡像
FROM golang:1.12.6-alpine

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

# 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

完結

這個只是搭個簡單的測試服務, 生產環境的話還是建議用阿里雲的鏡像服務, 比較方便管理和服務部署監控

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章