使用 Docker 安装 Gitea 代码仓库

使用 Docker 安装

Gitea 在其 Docker Hub 组织内提供自动更新的 Docker 镜像。可以始终使用最新的稳定标签或使用其他服务来更新 Docker 镜像。

该参考设置指导用户完成基于docker-compose的设置,但是docker-compose的安装不在本文档的范围之内。要安装docker-compose本身,请遵循官方安装说明。

基本

最简单的设置只是创建一个卷和一个网络,然后将docker.gitea.com/gitea:latest镜像作为服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。创建一个类似gitea的目录,并将以下内容粘贴到名为docker-compose.yml的文件中。请注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能无法启动。另请注意,标签:latest将安装当前的开发版本。对于稳定的发行版,您可以使用:1或指定某个发行版,例如1.25.3

version:"3"networks:gitea:external:falseservices:server:image:docker.gitea.com/gitea:1.25.3container_name:giteaenvironment:-USER_UID=1000-USER_GID=1000restart:alwaysnetworks:-giteavolumes:-./gitea:/data-/etc/timezone:/etc/timezone:ro-/etc/localtime:/etc/localtime:roports:-"3000:3000"-"222:22"

端口

要将集成的 openSSH 守护进程和 Web 服务器绑定到其他端口,请调整端口部分。通常,只需更改主机端口,容器内的端口保持原样即可。

version: "3" networks: gitea: external: false services: server: image: docker.gitea.com/gitea:1.25.3 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 restart: always networks: - gitea volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - - "3000:3000" - - "222:22" + - "8080:3000" + - "2221:22"

数据库

MySQL 数据库

要将 Gitea 与 MySQL 数据库结合使用,请将这些更改应用于上面创建的docker-compose.yml文件。

version: "3" networks: gitea: external: false services: server: image: docker.gitea.com/gitea:1.25.3 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 + - GITEA__database__DB_TYPE=mysql + - GITEA__database__HOST=db:3306 + - GITEA__database__NAME=gitea + - GITEA__database__USER=gitea + - GITEA__database__PASSWD=gitea restart: always networks: - gitea volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22" + depends_on: + - db + + db: + image: docker.io/library/mysql:8 + restart: always + environment: + - MYSQL_ROOT_PASSWORD=gitea + - MYSQL_USER=gitea + - MYSQL_PASSWORD=gitea + - MYSQL_DATABASE=gitea + networks: + - gitea + volumes: + - ./mysql:/var/lib/mysql

PostgreSQL 数据库

要将 Gitea 与 PostgreSQL 数据库结合使用,请将这些更改应用于上面创建的docker-compose.yml文件。

version: "3" networks: gitea: external: false services: server: image: docker.gitea.com/gitea:1.25.3 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=db:5432 + - GITEA__database__NAME=gitea + - GITEA__database__USER=gitea + - GITEA__database__PASSWD=gitea restart: always networks: - gitea volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22" + depends_on: + - db + + db: + image: docker.io/library/postgres:14 + restart: always + environment: + - POSTGRES_USER=gitea + - POSTGRES_PASSWORD=gitea + - POSTGRES_DB=gitea + networks: + - gitea + volumes: + - ./postgres:/var/lib/postgresql/data

命名卷

要使用命名卷而不是主机卷,请在docker-compose.yml配置中定义并使用命名卷。此更改将自动创建所需的卷。您无需担心命名卷的权限;Docker 将自动处理该问题。

version: "3" networks: gitea: external: false +volumes: + gitea: + driver: local + services: server: image: docker.gitea.com/gitea:1.25.3 container_name: gitea restart: always networks: - gitea volumes: - - ./gitea:/data + - gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22"

MySQL 或 PostgreSQL 容器将需要分别创建。

启动

要基于docker-compose启动此设置,请执行docker-compose up -d,以在后台启动 Gitea。使用docker-compose ps将显示 Gitea 是否正确启动。可以使用docker-compose logs查看日志。

要关闭设置,请执行docker-compose down。这将停止并杀死容器。这些卷将仍然存在。

注意:如果在 http 上使用非 3000 端口,请更改 app.ini 以匹配LOCAL_ROOT_URL = http://localhost:3000/

安装

通过docker-compose启动 Docker 安装后,应该可以使用喜欢的浏览器访问 Gitea,以完成安装。访问 http://server-ip:3000 并遵循安装向导。如果数据库是通过上述docker-compose设置启动的,请注意,必须将db用作数据库主机名。

环境变量

您可以通过环境变量配置 Gitea 的一些设置:

(默认值以粗体显示)

  • APP_NAME“Gitea: Git with a cup of tea”:应用程序名称,在页面标题中使用。
  • RUN_MODEprod:应用程序运行模式,会影响性能和调试。“dev”,“prod"或"test”。
  • DOMAINlocalhost:此服务器的域名,用于 Gitea UI 中显示的 http 克隆 URL。
  • SSH_DOMAINlocalhost:该服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安装页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
  • SSH_PORT22:克隆 URL 中显示的 SSH 端口。
  • SSH_LISTEN_PORT%(SSH_PORT)s:内置 SSH 服务器的端口。
  • DISABLE_SSHfalse:如果不可用,请禁用 SSH 功能。如果要禁用 SSH 功能,则在安装 Gitea 时应将 SSH 端口设置为0
  • HTTP_PORT3000:HTTP 监听端口。
  • ROOT_URL“”:覆盖自动生成的公共 URL。如果内部 URL 和外部 URL 不匹配(例如在 Docker 中),这很有用。
  • LFS_START_SERVERfalse:启用 git-lfs 支持。
  • DB_TYPEsqlite3:正在使用的数据库类型[mysql,postgres,mssql,sqlite3]。
  • DB_HOSTlocalhost:3306:数据库主机地址和端口。
  • DB_NAMEgitea:数据库名称。
  • DB_USERroot:数据库用户名。
  • DB_PASSWD“*empty*”:数据库用户密码。如果您在密码中使用特殊字符,请使用“您的密码”进行引用。
  • INSTALL_LOCKfalse:禁止访问安装页面。
  • SECRET_KEY“”:全局密钥。这应该更改。如果它具有一个值并且INSTALL_LOCK为空,则INSTALL_LOCK将自动设置为true
  • DISABLE_REGISTRATIONfalse:禁用注册,之后只有管理员才能为用户创建帐户。
  • REQUIRE_SIGNIN_VIEWfalse:启用此选项可强制用户登录以查看任何页面。
  • USER_UID1000:在容器内运行 Gitea 的用户的 UID(Unix 用户 ID)。如果使用主机卷,则将其与/data卷的所有者的 UID 匹配(对于命名卷,则不需要这样做)。
  • USER_GID1000:在容器内运行 Gitea 的用户的 GID(Unix 组 ID)。如果使用主机卷,则将其与/data卷的所有者的 GID 匹配(对于命名卷,则不需要这样做)。

自定义

此处描述的定制文件应放在/data/gitea目录中。如果使用主机卷,则访问这些文件非常容易;对于命名卷,可以通过另一个容器或通过直接访问/var/lib/docker/volumes/gitea_gitea/_data来完成。安装后,配置文件将保存在/data/gitea/conf/app.ini中。

升级

注意

❗❗确保已将数据卷到 Docker 容器外部的某个位置❗❗

要将安装升级到最新版本:

# Edit `docker-compose.yml` to update the version, if you have one specified# Pull new imagesdocker-composepull# Start a new container, automatically removes old onedocker-composeup -d

使用环境变量管理部署

除了上面的环境变量之外,app.ini中的任何设置都可以使用以下形式的环境变量进行设置或覆盖:GITEA__SECTION_NAME__KEY_NAME。 每次 docker 容器启动时都会应用这些设置。 完整信息在这里。

... services: server: environment: -GITEA__mailer__ENABLED=true -GITEA__mailer__FROM=${GITEA__mailer__FROM:?GITEA__mailer__FROM not set}-GITEA__mailer__PROTOCOL=smtps -GITEA__mailer__HOST=${GITEA__mailer__HOST:?GITEA__mailer__HOST not set}-GITEA__mailer__USER=${GITEA__mailer__USER:-apikey}-GITEA__mailer__PASSWD="""${GITEA__mailer__PASSWD:?GITEA__mailer__PASSWD not set}"""

Gitea 将为每次新安装自动生成新的SECRET_KEY并将它们写入app.ini。 如果您想手动设置SECRET_KEY,您可以使用以下 docker 命令来使用 Gitea 内置的方法生成SECRET_KEY。 安装后请妥善保管您的SECRET_KEY,如若丢失则无法解密已加密的数据。

以下命令将向stdout输出一个新的SECRET_KEYINTERNAL_TOKEN,然后您可以将其放入环境变量中。

dockerrun -it --rm docker.gitea.com/gitea:1 gitea generate secret SECRET_KEYdockerrun -it --rm docker.gitea.com/gitea:1 gitea generate secret INTERNAL_TOKEN
---services:server:environment:-GITEA__security__SECRET_KEY=[value returned by generate secret SECRET_KEY]-GITEA__security__INTERNAL_TOKEN=[value returned by generate secret INTERNAL_TOKEN]

SSH 容器直通

由于 SSH 在容器内运行,因此,如果需要 SSH 支持,则需要将 SSH 从主机传递到容器。一种选择是在非标准端口上运行容器 SSH(或将主机端口移至非标准端口)。另一个可能更直接的选择是将 SSH 连接从主机转发到容器。下面将说明此设置。

本指南假定您已经在名为git的主机上创建了一个用户,该用户与容器值USER_UID/USER_GID共享相同的UID/GID。这些值可以在docker-compose.yml中设置为环境变量:

environment: -USER_UID=1000-USER_GID=1000

接下来将主机的/home/git/.ssh装入容器。否则,SSH 身份验证将无法在容器内运行。

volumes: - /home/git/.ssh/:/data/git/.ssh

现在,需要在主机上创建 SSH 密钥对。该密钥对将用于向主机验证主机上的git用户。

sudo-ugitssh-keygen -t rsa -b4096-C"Gitea Host Key"

在下一步中,需要在主机上创建一个名为/usr/local/bin/gitea的文件(具有可执行权限)。该文件将发出从主机到容器的 SSH 转发。将以下内容添加到/usr/local/bin/gitea

ssh-p2222-oStrictHostKeyChecking=no git@127.0.0.1"SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\"$0$@"

为了使转发正常工作,需要将容器(22)的 SSH 端口映射到docker-compose.yml中的主机端口 2222。由于此端口不需要暴露给外界,因此可以将其映射到主机的localhost

ports:# [...]-"127.0.0.1:2222:22"

另外,主机上的/home/git/.ssh/authorized_keys需要修改。它需要以与 Gitea 容器内的authorized_keys相同的方式进行操作。因此,将您在上面创建的密钥(“Gitea 主机密钥”)的公共密钥添加到/home/git/.ssh/authorized_keys。这可以通过echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys完成。重要提示:来自git用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以command="/app [...]作为前缀。

该文件应该看起来像:

# SSH pubkey from git userssh-rsa<Gitea Host Key># other keys from userscommand="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty<user pubkey>

这是详细的说明,当发出 SSH 请求时会发生什么:

  1. 使用git用户向主机发出 SSH 请求,例如git clone git@domain:user/repo.git
  2. /home/git/.ssh/authorized_keys中,该命令执行/usr/local/bin/gitea脚本。
  3. /usr/local/bin/gitea将 SSH 请求转发到端口 2222,该端口已映射到容器的 SSH 端口(22)。
  4. 由于/home/git/.ssh/authorized_keys中存在git用户的公钥,因此身份验证主机 → 容器成功,并且 SSH 请求转发到在 docker 容器中运行的 Gitea。

如果在 Gitea Web 界面中添加了新的 SSH 密钥,它将以与现有密钥相同的方式附加到.ssh/authorized_keys中。

注意

SSH 容器直通仅在以下情况下有效

  • 在容器中使用opensshd
  • 如果未将AuthorizedKeysCommandSSH_CREATE_AUTHORIZED_KEYS_FILE = false结合使用以禁用授权文件密钥生成
  • LOCAL_ROOT_URL不变

source

使用 Docker 安装 | Gitea Documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1159487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8的智能鼠害监控与追踪系统 | 高效室内外鼠类识别【含源码与部署指南】

基于YOLOv8的智能鼠害监控与追踪系统 | 高效室内外鼠类识别【含源码与部署指南】 项目概述 在城市管理、食品加工厂、仓储物流以及科研实验室等环境中&#xff0c;鼠害监控是一个长期存在的挑战。传统依赖人工巡查或红外探测的方式&#xff0c;往往存在成本高、误报率高和实时…

基于 YOLOv8 的舌诊智能识别系统、舌苔视觉分析系统 [目标检测完整源码]

基于 YOLOv8 的舌诊智能识别系统、舌苔视觉分析系统 [目标检测完整源码] 一、背景与问题引入 中医舌诊作为中医“四诊”体系中的重要组成部分&#xff0c;通过观察舌质与舌苔的颜色、形态和分布情况&#xff0c;对人体脏腑功能与病理状态进行综合判断。然而&#xff0c;在实际…

赋予机械臂空间智慧:利用电鱼智能 RK3588 NPU 加速 3D 视觉抓取算法

什么是 电鱼智能 RK3588&#xff1f;电鱼智能 RK3588 是目前国产嵌入式领域算力最强的 SoC 之一。它搭载 8 核 CPU&#xff08;4A76 4A55&#xff09;和 6TOPS 三核 NPU。对于 3D 视觉应用&#xff0c;它拥有两大杀手锏&#xff1a;一是强大的 NPU 支持浮点/定点运算&#xff…

企业人力资源管理师,HR专业证书!

当下所有企业的核心痛点“人才招不来、骨干留不住、人效提不上、文化建不实” 这四大难题&#xff0c;正让无数管理者彻夜难眠&#xff01; 而破局的关键钥匙&#xff0c;正是——专业的企业人力资源管理师。 他们不再是传统的“人事”&#xff0c;而是驱动组织发展的战略引擎&…

做项目总是出问题,如何提升项目管理能力?

在很多企业和组织中&#xff0c;一个常见的场景是这样的&#xff1a;一个项目开始时&#xff0c;大家摩拳擦掌&#xff0c;信心满满&#xff0c;但随着时间推移&#xff0c;问题却接连不断。进度延误、预算超支、团队冲突、目标模糊、需求频繁变更……这些都是项目失败的典型症…

基于Web教师个人成果管理系统毕业论文+PPT(附源代码+演示视频)

文章目录基于Web教师个人成果管理系统一、项目简介&#xff08;源代码在文末&#xff09;1.运行视频2.&#x1f680; 项目技术栈3.✅ 环境要求说明4.包含的文件列表&#xff08;含论文&#xff09;数据库结构与测试用例系统功能结构后端运行截图项目部署源码下载基于Web教师个人…

驯服“抖动”:利用电鱼智能 RK3568 实时补丁内核实现 EtherCAT 主站微秒级控制

什么是 电鱼智能 RK3568 实时版&#xff1f;电鱼智能 RK3568 是一款四核 Cortex-A55 处理器。虽然它是通用处理器&#xff0c;但电鱼智能团队针对工业场景&#xff0c;深度定制了 Linux 5.10 RT (Real-Time) 内核。我们优化了网卡驱动&#xff08;GMAC&#xff09;的中断处理机…

赋予机器人“理解力”:利用电鱼智能 RK3576 实现 DeepSeek 大模型离线部署方案

为什么选择 RK3576 部署 DeepSeek&#xff1f;电鱼智能 RK3576 是一款面向 AIoT 的中高端 SoC。在具身智能场景下&#xff0c;它的核心优势在于&#xff1a;Transformer 硬件加速&#xff1a;RK3576 的 NPU 对 Transformer 算子&#xff08;Attention机制&#xff09;进行了专门…

*压力测试**- **核心**:通过施加超出正常范围的负载(如高并发、大数据量、高频操作等)

一、软件测试类型及核心内容压力测试 核心&#xff1a;通过施加超出正常范围的负载&#xff08;如高并发、大数据量、高频操作等&#xff09;&#xff0c;检验系统在极端条件下的稳定性和容错能力&#xff0c;目标是发现系统崩溃点或性能瓶颈。变体&#xff08;敏感性测试&…

面向对象软件的集成测试策略由于面向对象软件中类之间通过消息传递协作,缺乏传统自顶向下或自底向上的控制流结构

一、面向对象软件的集成测试策略 由于面向对象软件中类之间通过消息传递协作&#xff0c;缺乏传统自顶向下或自底向上的控制流结构&#xff0c;因此集成测试需采用更适合其特性的策略&#xff1a;基于线程的测试&#xff08;Thread-Based Testing&#xff09; 将系统中响应某一…

告别海投低效:3步构建精准的校招人才画像,让你的招聘ROI翻倍

各位校招战线的HR朋友们&#xff0c;是否经历过这样的场景&#xff1a;秋招投入大量精力&#xff0c;收 获十万份简历&#xff0c;最终录用者却寥寥无几&#xff1f;问题或许不在于岗位吸引力&#xff0c;而在于招聘的“第一公里”——目标候选人的画像模糊。与其在简历海洋中盲…

AI的秘密:它真的能思考吗?

引言在科幻电影中&#xff0c;我们曾无数次看到拥有自我意识、情感甚至独立思想的人工智能。如今&#xff0c;随着ChatGPT、Sora等大模型的横空出世&#xff0c;AI在语言理解、内容生成、图像创作等领域的表现令人惊叹&#xff0c;仿佛这些“机器”真的拥有了某种智慧。这不禁让…

断电重启和reboot,还是有很大差异

手头的高通移远板子&#xff0c;运行camx-hal3-test断电重启Enter Camera Testing camx-hal3-test I 4547 4547 BufferAllocator.cpp:100] Using DMA-BUF heap named: system camx-hal3-test I 4547 4547 BufferAllocator.cpp:100] Using DMA-BUF heap named: system Camer…

【毕业设计】基于深度学习python_CNN卷积神经网络识别花卉基于python_CNN卷积神经网络识别花卉

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

UV 项目管理指南

UV 操作指南 文章目录UV 操作指南&#x1f30e; 一. UV 介绍&#x1f380; 二. 安装 UV&#x1f4d9; 三. 操作指南&#x1f3af; 3.1 命令预览&#x1f40d; 3.2 Py版本管理&#x1f680; 3.3 **项目管理**&#x1f3a9; 3.4 虚拟环境&#x1f4e6; 3.5 依赖管理&#x1f6e0;…

为什么程序员怕35岁,但网安却越老越吃香?

同样是技术岗&#xff0c;为啥程序员怕35岁危机&#xff0c;网安却越老越值钱&#xff1f; 你有没有发现&#xff0c;身边做程序员的朋友&#xff0c;一到 30 岁就开始焦虑 “35 岁后怎么办”&#xff0c;但做网安的前辈&#xff0c;反而越往后越吃香&#xff0c;薪资和话语权…

输入AI绘画的用户评价,自动分类统计(满意,一般,不满意),输出评价分析报告和改进建议。

这是将数据科学、人工智能与商业决策结合起来。下面我将为您提供一个完整的、基于Python的“AI绘画用户评价分析”程序。项目概览&#xff1a;ArtCriticScope - AI绘画用户评价分析器核心功能&#xff1a;用户提供一个包含AI绘画作品用户评价的CSV或文本文件&#xff0c;程序会…

【人工智能引论期末复习】 第6章 深度学习4 - RNN

一、基本概念与填空考点RNN全称&#xff1a;循环神经网络&#xff08;Recurrent Neural Network&#xff09;RNN的主要特点&#xff1a;具有记忆能力&#xff0c;能处理序列数据前后输入之间存在依赖关系与CNN和前馈网络的区别&#xff1a;CNN&#xff1a;局部感知、参数共享&a…

别再说“零基础学不了网安”!电脑小白也能入门的4阶段路线

别再说 “零基础学不了网安”&#xff01;电脑小白也能入门的 4 阶段路线. 总有人问&#xff1a;“我连代码都不会写&#xff0c;能学网络安全吗&#xff1f;” 其实真不用怕&#xff0c;哪怕你是只会用电脑刷视频的纯小白&#xff0c;跟着清晰的路线一步步学&#xff0c;照样…

电鱼智能 AM3354 驱动巡检履带机器人的高可靠运动底盘控制

什么是 电鱼智能 AM3354&#xff1f;电鱼智能 AM3354 是一款经典的工业级核心板&#xff0c;搭载 TI Sitara AM335x 处理器。它最大的杀手锏不是 CPU 主频&#xff0c;而是内置了 2 个 PRU-ICSS&#xff08;可编程实时单元&#xff09;。这两个 200MHz 的 RISC 核心独立于主 CP…