写在前边php
为何要打造一个属于本身的代码托管平台呢?这个事情还要从我刚开始工做提及。mysql
我是在大三下学期的时候,大概是2017年三月份,以我的身份作过一些小项目,接收不了学校的课程无趣无心义,最后实在耐不住呆在学校的无聊和寂寞(是的,那个时候仍是条单身狗),就每天逃课出去找了个工做,算是第一份工做吧。nginx
想一想过得好快,如今已是2019年的2月了(传说中的两年工做/划水经验?)期间换了两家公司,工做方式也改变了许多。git
我本身的使用习惯也发生了很大变化。想我在写下基于Nginx的高可用大并发微信电子商城系统设计与实现——毕业设计的时候,仍是分别在两台服务器写了 php
脚本,经过配置 svn
的钩子来请求两个 php
脚原本同时拉取代码的。github
在熟悉了 git workflow
后,本身也慢慢习惯使用 git
来管理本身的代码。But,我相信你也和我同样在不少时候,并不但愿本身的仓库是公开的(在开始决定使用 gitea
的时候 github
私仓还难免费),毕竟有些东西是敏感的。web
让咱们来比较一下各类代码托管平台sql
git init --bare test.git
),一开始我确实这么干的,可是讲道理太不方便管理了一开始我确实是自建Git服务器,太不方便了,后来了解了 Gogs
,开始使用 Gogs
的,再后来就是了解到 Gitea
这个 Gogs
的Fork版本,同样的特性,功能更加丰富,因而我选择了升级到 Gitea
docker
gitea
说干就干,开始搞事情吧,接下来都是干货vim
准备为
Gitea
使用的域名为gittest.yiranzai.top
bash
若是要将git和其它数据持久化,你须要建立一个目录来做为数据存储的地方
mkdir -p /var/lib/gitea
复制代码
docker-compose.yml
文件还不了解docker-compose?点击这里了解学习配置docker-compose
咱们须要
nginx
(使用nginx
来作对外的服务代理,不要让gitea
直接对外暴露web服务)memcached
(为gitea
提供Cache
服务)mysql
(存储gitea
所须要存储的数据)gitea
(代码托管平台)
version: "3.7"
services:
nginx:
image: nginx:alpine
container_name: test_nginx
ports:
- "80:80"
restart: always
networks:
- giteanet
mysql:
image: mysql:5.7
restart: always
container_name: test_mysql
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea_password
networks:
- giteanet
volumes:
- /path/to/conf/my.cnf:/etc/mysql/my.cnf:rw
- /path/to/data:/var/lib/mysql/:rw
- /path/to/logs:/var/log/mysql/:rw
memcache:
image: memcached:alpine
container_name: test_memcache
restart: always
networks:
- giteanet
gitea:
image: gitea/gitea:latest
restart: always
container_name: test_gitea
networks:
- giteanet
ports:
- "22:22" #git服务对外使用22端口会更加方便
volumes:
- /var/lib/gitea:/data:rw #gitea的data数据应该作持久化,映射到宿主机磁盘上
networks:
giteanet:
复制代码
$ docker-compose up -d
Creating test_memcache ... done
Creating test_nginx ... done
Creating test_mysql ... done
Creating test_gitea ... done
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------
test_gitea /usr/bin/entrypoint /bin/s ... Up 0.0.0.0:22->22/tcp, 0.0.0.0:3000->3000/tcp
test_memcache docker-entrypoint.sh memcached Up 11211/tcp
test_mysql docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
test_nginx nginx -g daemon off; Up 0.0.0.0:80->80/tcp
$ cd /var/lib/gitea
$ tree .
$ .
├── git # git仓库存储位置
├── gitea
│ ├── conf
│ │ └── app.ini # gitea配置文件
│ └── log # gitea log目录
└── ssh # ssh key目录
复制代码
nginx
配置文件server {
listen 80;
server_name gittest.yiranzai.top;
location / {
proxy_pass http://test_gitea:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
复制代码
nginx
使配置生效gittest.yiranzai.top
完成初始化配置长图显示配置过程
$ vim /var/lib/gitea/gitea/app.ini
...
# 这里我只放出有关Cache的配置
[cache]
ADAPTER = memcache
HOST = test_memcache:11211
...
复制代码
啥?不会建立仓库?劝退劝退
友情提示,右上角的
+
能够迁移别的仓库到gitea
每次到告终束,都莫名其妙的有一些成就感,大概是由于折腾出来一个新东西。
总之,终于搞好了,先慢慢随便点点,熟悉熟悉这个简单又强大的代码托管平台吧。
Happy Coding!