使用Docker部署Gogs服务器
背景
前一段使用docker部署了博客站,现在计划将gogs服务器也是用docker部署,这篇文章用来做一个记录和总结。
Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。同时Docker容器之间都是互相隔离的,互不干扰。
介于Docker的特性,在一台服务器上如果要部署多种应用的话也是非常方便的,不用担心配置文件的冲突,也不用担心一个服务出错之后导致的其他服务不能够使用。
Gogs
Gogs 的是一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
对于个人或者小型团队来说使用gogs作为私有代码仓库要比gitlab简单易用,所以一直是我搭建云端git仓库的不二之选。
规划
容器之间如何连接?
虽然容器之间是互相隔离的,但是对于一些需要互相协作的容器也是可以互相通信的,对于docker的网络规划还是使用独立网络体验比较好,web服务专用一套网络‘network-webserver’,并且我们使用的MySQL数据库也在这个网络里。
Gogs使用的端口有ssh的22端口和网页访问的3000端口,介于容器与主机之间的关系是映射访问,我后期还会将Gogs的ssh端口修改为3022,所以在创建容器的时候直接映射3022端口。
整体拓扑图如下:
我还想要什么功能?
在本地运行了一个本地端的Gogs后,查看了下设置里面的功能,觉得邮件通知的功能非常不错,刚好我也有一个闲置的邮箱。
文件放哪里?
对于使用Docker来说,存储最好是留在主机上,一旦容器有什么问题了也能快速的被恢复,也能够快速的将其备份到其他地方。检查Gogs的镜像信息后,发现需要创建两个目录,一个供数据使用,一个供Gogs的备份使用。
开始配置
启动容器
在主机上创建需要做数据卷的目录:"gogs","gogs-backup"。
pull镜像:docker pull gogs/gogs:0.12
启动容器:
docker run run -d --name gogs -p 3022:3022 -p 3000:3000 -v gogs/:/data -v gogs-backup/:/backup --network network-webserver gogs/gogs:0.12
配置网页
在浏览器输入”域名:3000“打开配置页面。
错误处理
其实搭建是非常简单的,但是在非常简单的步骤里总是会有一些意想不到的问题出现,所以这次搭建主要记录搭建中遇到的问题。
镜像选择什么版本
在Docker Hub中,Gogs的lastest标签指向了一个开发版,为了稳定我们可以选择0.12的标签,这个标签指向了目前的最新版0.12.3
容器时间不同步
在安装完毕Gogs后发现存在容器时间使用的是UTC时间,但是国内环境一般使用的是CST时间,这个时间差导致了很多的问题,所以要把容器内的时间修改掉。
docker cp /usr/share/zoneinfo/Asia/Shanghai gogs:/etc/localtime
总结
版权声明:
作者:EzioTAuditore
链接:http://blog.acdts.top/eziotauditore/docker-install-gogs/
来源:ETA's Blog
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论