设备: raspberry pi 3B E14
环境: Raspbian GNU/Linux 9 Stretch
目录
0. 前言
本文是树莓派应用记录系列的第三篇,
前两篇分别是:
树莓派上安装打印服务器;
树莓派上安装Docker(是本文的前导文章)。
大家可根据需要,选择阅读。
本文也是19年写就的应用记录文章,当时的目的就是为了在树莓派上安装git服务器,当自己的代码仓库,现已稳健运行2年多,还不赖!
本文和docker安装那篇一样,也可能文中的有些命令和方法现今已不再适用,但我也没必要去重新安装部署一遍. 请各位读者海涵, 如实操参考本文的话也请注意!
1. Gogs简介
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用Go语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
2. 关于docker的安装
见另一篇树莓派上安装Docker的日志, 这里不再赘述.
3. 用docker安装Gogs
参考文章:
Gogs官方github文档:https://github.com/gogs/gogs/tree/master/docker
https://www.jianshu.com/p/4e43bda3e1f2
http://ohmerhe.com/2016/12/29/raspberry_install_gogs_with_docker/
https://www.zybuluo.com/yangxuan/note/621855
我没有采用网上很多文章中 用一个docker run命令即下载image又启动容器的方式, 而是使用官方github的readme中多步命令的方式来安装, 毕竟我是新手吗, 一步步来稳妥些.
3.1 Pull image from Docker Hub
docker pull gogs/gogs-rpi注意: 我用的镜像名为gogs/gogs-rpi, 这是gogs官方专门为树莓派做的镜像, 我去dockerhub网站查了一下, 这个镜像还时常在更新.
3.2 在本地创建个目录给容器使用
mkdir -p /var/gogs3.3 将容器run起来
docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs-rpi下面用我有限的docker知识稍加解释一下这条命令:
结尾的gogs/gogs-rpi是一开始pull下拉的image名字--name=gogs参数指定了 运行起来的容器名字 为 gogs-p 10022:22 和 -p 10080:3000 2个参数指定了将 外部10022端口 映射到 容器内22端口 和 外部10080端口 映射到 容器内3000端口-v /var/gogs:/data参数指定了将 外部的/var/gogs目录 映射到 容器内的/data目录此命令输入时候, 稍等几秒之后,
就可以在浏览器通过http://树莓派的内网IP:10080打开gogs的初始配置页了.
3.4 关于初始配置
我数据库选择了sqlite, 其他的都选择了默认值,
包括域名设置, 也用了默认值localhost, 后面会带来什么影响, 现在还不得知, 毕竟目前都是内网用IP地址访问.
配置好后, 点击安装, 很快gogs就安装完毕. 注册用户, 登陆, 创建git仓库, 之后都是git的老一套, 就不赘述了.
3.5 Run起来的容器的停止 与 启动
前面用docker run命令run起来的容器, 可以在命令行用ctrl+c来停止, 反正我是用了这个简单粗暴的方法.
想让容器再次启动, 可用下面的命令:
docker start gogs记得吗, 这里gogs是我的容器名.
其他关于更多docker的命令, 可参照这里的电子书, 这里就不赘述了.
3.6 SSH遇到的问题
满心欢喜地建好了git代码仓库, 以为git已经熟门熟路, 当我想将本地的库push上去时, 却一直不成功, 提示 权限不够.
我也已经将电脑里的ssh密钥 添加到了 gogs中的用户密钥中, 还是不行.
折腾了一会儿, 偶然在一篇文章中发现, 可能是我git remote添加的远程库有问题.
我一开始添加的远程库如下:
git remote add origin [email protected]:10022:username/xxx.git我也觉得:10022:username这其中的2个冒号, 会不会有问题?
后来看到了下面这种行之有效的方法:
git remote add origin ssh://[email protected]:10022/username/xxx.git使用了之后, 已经顺利地push了.
3.7 容器的开机自启动
我们部署的环境是树莓派, 树莓派难免会断电重启, 那如何让我们的容器开机自启动呢?
实际上很简单, docker已经贴心地为我们考虑好了, 并不需要传统的linux的方法(比如写脚本等, 在/etc/rc.local中加入命令等), docker有专门的相关参数--restart=always。
使用上有2种方法:
在docker run命令创建容器时,就加入--restart=always参数,如下:docker run --name=gogs --restart=always -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs-rpi对于已经创建好的容器,没必要重新删除容器再重新run,通过docker update命令设置即可,如下:docker update --restart=always gogs其中, gogs是已有容器的name.
对于我们的情况, 正好适用于第二种情况, 我们已经docker run起来了容器, 即使树莓派掉电了, 重新上电后, 容器仍在, 只是停止了, 可以用docker start重新运行起来. 所以我们设置自启动时, 用docker update正好.