本文最后更新日期 [2020-12-18]
找一个目录,新建一个 docker-compose.yml
文件,内容如下:
version: "2"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
environment:
- USER_UID=1000 # 用户ID 这两项需要注意,文章下面解释
- USER_GID=1000 # 用户GroupID
- DB_TYPE=postgres # 默认数据库
- DB_HOST=db:5432
- DB_NAME=gitea
- DB_USER=gitea
- DB_PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- /data/software/gitea/data:/data # 自己外面目录的路径:docker 里面的路径(需要改成你自己的)
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "8101:3000" # 外面的端口,里面的端口。用于网页显示和 https 的 git 地址
- "8222:22" # 外面的端口,里面的端口。用于使用 ssh git 地址
depends_on:
- db
db:
image: postgres:9.6
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- /data/software/gitea/postgres:/var/lib/postgresql/data # 挂在的数据。外面的路径:里面的路径
外面的xx都需要改成你自己的。
外面的xx都需要改成你自己的。
外面的xx都需要改成你自己的。
如果 yml 中的中文注释出现问题,则去掉它们。
运行 docker-compose up -d
需要注意的问题
1. 如果你是 aliyun 或者其他云服务器
请在云服务器控制台,检查网络安全组,是否访问你自定义的端口。(即,端口是否开放)
否则拉去不了代码,会报错:找不到指定地址。
2. UID 和 GID
这两个内容对应一个,非 root 用户,比如 git 用户。
查看用户和群组ID
查看用户ID
cat /etc/passwd
结果示例:
git:x:1001:1001::/home/git:/bin/bash
UID 就是 1001
查看群组ID
cat /etc/group
结果示例:
git:x:1001:
GID 就是 1001
如果没有 git 账户,或者想用其他账户
创建一个群组
groupadd git
创建一个用户,并加入 git 组
useradd git -g git
3. 上传 lfs 文件,提示 HTTP 413
原因:系 nginx 限制上传文件大小,默认为 8M 的原因。
解决:修改 nginx 文件大小限制。
nginx 配置里增加:
# client_max_body_size 8M; #(配置请求体缓存区大小, 不配的话)
client_max_body_size 100M;
4. 设置端口映射(使用 ssh 的 22端口)
外网能够使用 ssh 方式 clone 项目,通过 22 端口
内网 git 转发 22 端口请求到 docker 容器开放的 8222 端口
docker 容器开放给服务器的 8222 转发给容器内部的 22 端口
实现,使用 gitea docker 情况下,仍能够用默认 22端口,而不是 8222端口
具体操作是:
1. 创建 git 用户的 ssh key
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
生成的 key 位置在 /home/git/.ssh
2. 创建可执行文件脚本,用于 ssh 转发
创建文件(没有后缀)(没有目录,创建目录)
/app/gitea/gitea
gitea
文件内容:
#!/bin/sh
ssh -p 8222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
更改文件可执行权限(可执行)
chmod +x gitea
更改后的文件权限如图
3. 连接 gitea 用户 key 到 git 用户下
ln -s /data/software/gitea/data/git/.ssh/authorized_keys /home/git/.ssh/authorized_keys
/data/software/gitea/data
改成你自己的 gitea 路径,要指向 gitea 中的 git/.ssh
目录
echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys
不出问题,应该就大功告成了
配置上 nginx 访问 gitea 页面
127.0.0.1:8101
地址和端口,端口号是上面配置文件里的,自己改了就行了
server {
gzip on;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
server_name git.<yourdomain>.com;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
client_max_body_size 100M;
# client_max_body_size 8M;
location / {
proxy_pass http://127.0.0.1:8101;
}
}
配置邮箱
在 gitea/conf/app.ini
中配置,举例网易邮箱:
[mailer]
ENABLED = true
HOST = smtp.163.com:465
FROM = example@163.com
USER = example@163.com
PASSWD = 你的密码
网友评论