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

简介: 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就直接打开配置改就行了

20200614190538878.png

这样私有镜像服务就搭好了


制作自己的服务镜像


服务端用的是golang, 包管理是go mod, 然后直接找官方发布的镜像就可以了, 下面都有官方打包实例


20200614183545983.png

然后需要注意一下时区问题, 这个我之前发过博文, 时区不同可能会存在差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 $(docker images | grep "${serviceName}" | awk '{print $3}')
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

完结


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


目录
相关文章
|
3天前
|
Cloud Native 测试技术 数据安全/隐私保护
云原生之使用Docker部署Teedy轻量级文档管理系统
【5月更文挑战第8天】云原生之使用Docker部署Teedy轻量级文档管理系统
19 1
|
1天前
|
Cloud Native 安全 Linux
【云原生之Docker实战】使用Docker部署mBlog微博系统
【5月更文挑战第10天】使用Docker部署mBlog微博系统
10 2
|
2天前
|
JavaScript 前端开发 测试技术
Docker环境下部署Ghost开源内容管理系统
【5月更文挑战第9天】Docker环境下部署Ghost开源内容管理系统
7 0
|
4天前
|
Cloud Native 测试技术 Linux
云原生之使用Docker部署homer静态主页
【5月更文挑战第7天】云原生之使用Docker部署homer静态主页
12 0
|
5天前
|
监控 Cloud Native 测试技术
云原生之使用Docker部署ServerBee服务器监控工具
【5月更文挑战第6天】云原生之使用Docker部署ServerBee服务器监控工具
13 1
|
5天前
|
存储 安全 开发者
【Docker 专栏】Docker 与云存储服务的集成
【5月更文挑战第9天】在数字化时代,Docker和云存储服务的结合为企业和开发者提供了强大工具。Docker的高效性、可移植性和隔离性,加上云存储的扩展性、高可靠性和高可用性,通过集成可以实现数据持久化、便捷部署和资源优化。常见的集成包括AWS S3、Azure Blob Storage和Google Cloud Storage。集成时需注意安全、性能和兼容性问题,未来集成将更加紧密和智能化,助力企业创造更大价值。
【Docker 专栏】Docker 与云存储服务的集成
|
5天前
|
机器学习/深度学习 监控 Kubernetes
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
【5月更文挑战第9天】本文探讨了Docker容器服务的自动扩展与缩容原理及实践,强调其在动态业务环境中的重要性。通过选择监控指标(如CPU使用率)、设定触发条件和制定扩展策略,实现资源的动态调整。方法包括云平台集成和使用Kubernetes等框架。实践中,电商平台和实时数据处理系统受益于此技术。注意点涉及监控数据准确性、扩展速度和资源分配。未来,智能算法将提升扩展缩容的效率和准确性,成为关键技术支持。
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
|
6天前
|
前端开发 应用服务中间件 nginx
前后端分离项目Docker部署指南(下)
前后端分离项目Docker部署指南(下)
|
6天前
|
NoSQL 关系型数据库 网络安全
前后端分离项目Docker部署指南(上)
前后端分离项目Docker部署指南(上)
|
6天前
|
开发框架 安全 网络安全
【Docker 专栏】Docker 多平台应用构建与部署
【5月更文挑战第8天】Docker作为一种关键的容器化技术,简化了多平台应用的构建与部署。它提供一致的运行环境,确保应用在不同平台无缝运行;通过分层构建机制加速镜像创建,提升开发效率。Docker的可移植性、高效部署及资源利用率是其主要优势。流程包括开发环境准备、构建镜像、测试验证及部署。然而,面临操作系统差异、网络安全和资源限制等挑战,需注意安全、版本管理和性能优化。Docker在多平台场景的应用将持续发挥价值。
【Docker 专栏】Docker 多平台应用构建与部署