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

完结


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


目录
相关文章
|
10天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
2天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
59 44
|
13天前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
65 19
|
22天前
|
安全 数据安全/隐私保护 Docker
docker私有仓库harbor安装
通过以上步骤,您可以成功在企业内部安装和配置Harbor私有仓库,方便地管理和分发Docker镜像。Harbor不仅提供了基础的镜像管理功能,还增强了安全性、身份管理和审计功能,使其成为企业级容器镜像管理的理想选择。
79 22
|
24天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
56 23
|
14天前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
25天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
48 22
|
28天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
61 25
|
2月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
89 5
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
29天前
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8

热门文章

最新文章