美文网首页
linux 安装部署 gitea docker版

linux 安装部署 gitea docker版

作者: 千罹 | 来源:发表于2019-11-26 14:10 被阅读0次

中文文档(可能不全)
英文文档(全)

本文最后更新日期 [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  = 你的密码

相关文章

网友评论

      本文标题:linux 安装部署 gitea docker版

      本文链接:https://www.haomeiwen.com/subject/kevewctx.html