Linux 使用 docker 安装 Gogs 公司私有 Git 仓库

ops/2025/3/15 0:06:49/

Gogs 简介

Gogs(Go Git Service)是一个用 Go 语言编写的自托管 Git 服务,类似于 GitHub 或 GitLab,但更轻量、易于部署和使用。Gogs 的目标是提供一个简单、快速且低资源占用的 Git 服务,适合个人开发者、小团队或企业使用。

下载官网:Gogs: A painless self-hosted Git service

 安装部署:

首先安装docker,这里不再详细解释了。

#安装好docker之后,拉取gogs镜像。
docker pull gogs/gogs
#创建本地目录存放数据
mkdir -p /var/gogs
#使用run命令绑定端口和一些配置文件
docker run -d --name=my_gogs -p 1022:22 -p 3000:3000 -v /var/gogs:/data gogs/gogs
#注释:
#docker run  创建并启动一个新的容器。
#-d          表示以“后台模式”运行容器。
#--name      用于为容器指定一个名称,这里是 my_gogs
#-p 1022:22  表示将宿主机的 1022 端口映射到容器的 22 端口。
#-p 3000:3000 将宿主机的 3000 端口映射到容器的 3000 端口。
#-/var/gogs:/data 表示将宿主机的 /var/gogs 目录挂载到容器的 /data 目录。
#gogs/gogs   是Gogs的官方Docker镜像,托管在Docker Hub上。#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 临时
setenforce 0  
# 永久 注意需要重启才能生效。
sed -i 's/enforcing/disabled/' /etc/selinux/config #拉取mysql镜像
docker pull mysql:8.0
#启动mysql容器
docker run -d --name=mysql8 \
>   -e MYSQL_ROOT_PASSWORD=password \
>   -p 5432:3306 \
>   -v /path/to/mysql/data:/var/lib/mysql \
>   mysql:8.0#-d:后台运行容器。
#--name=mysql8:为容器指定名称。
#-e MYSQL_ROOT_PASSWORD=password:设置MySQL的root用户密码。
#-p 5432:3306:将宿主机的3306端口映射到容器的3306端口(MySQL默认端口)。
#-v /path/to/mysql/data:/var/lib/mysql:将宿主机的目录挂载到容器的 /var/lib/mysql 目录,用于持久化数据。
#mysql:8.0:使用的镜像名称和版本。
#进入容器
docker exec -it  mysql8 bash 
#进入数据库里面
mysql -u root -p
#输入密码
#创建数据库
CREATE DATABASE gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
#utf8mb4 是Gogs推荐的字符集,支持存储Emoji等特殊字符。
#utf8mb4_general_ci 是默认的排序规则。
#创建用户并设置密码
#创建用户 gogs,并设置密码为password :
CREATE USER 'gogs'@'%' IDENTIFIED BY 'password ';
#授予用户 gogs 对数据库 gogs 的所有权限
GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'%';
#刷新权限
FLUSH PRIVILEGES;
#检查用户 gogs 的权限:
SHOW GRANTS FOR 'gogs'@'%';
#退出MySQL命令行:
exit;

打开浏览器访问 http://服务器IP:3000

 

报错500,原因没有启用邮箱配置。

解决方法:

#查找app.ini文件
find / -name app.ini
#编辑app.ini文件
vim /var/gogs/gogs/conf/app.ini#启用邮箱配置
把改为ENABLED = true  #gogs重启
docker restart my_gogs
docker restart mysql8

重启gogs之后重新注册。

登录成功

创建仓库:

后面的内容和gitee github 仓库差不多,不再详细描述了。


http://www.ppmy.cn/ops/165795.html

相关文章

LeetCode Hot100刷题——对称二叉树

101.对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示: 树…

STM32全系大阅兵(2)

接前一篇文章:STM32全系大阅兵(1) 本文内容参考: STM32家族系列的区别_stm32各个系列区别-CSDN博客 STM32--STM32 微控制器详解-CSDN博客

《大语言模型》学习笔记(一)

一、什么是大语言模型 大语言模型是指在海量无标注文本数据上进行预训练得到的大型预训练语言模型,例如GPT-3,PaLM和LLaMA。大语言模型(Large Language Model,LLM)是一种基于深度学习的自然语言处理模型,能…

modbusrtu.h:5:10: error: ‘QSerialPort‘ file not found

解决 QSerialPort 头文件未找到的问题: 1. 确保已安装 Qt Serial Port 模块 QSerialPort 属于 Qt Serial Port 模块,需先确认已安装该模块。 安装步骤: 打开 Qt Maintenance Tool: 在开始菜单搜索并打开 Qt Maintenance Tool 选择当前安装的 Qt 版本,点击 “添加或移除…

Elasticsearch 7.x入门学习-系统架构与工作流程

1 核心概念 1.1 索引(Index) Elasticsearch 索引的精髓:一切设计都是为了提高搜索的性能。 一个索引就是一个拥有相似特征的文档集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个…

第十五届蓝桥杯大学B组(握手问题、小球反弹、好数)

一、握手问题 思路1&#xff1a; 1)先让所有人相互握手 第一个人49次 第二个人48次 第五十个人0次 共计01249 2)减去7个没握手的 016 #include<stdio.h> int main() {int a 50*49/2 - 7*6/2;printf("%d\n",a);return 0; } 运行结果&#xf…

【QT】-解析打包json

在 Qt 中&#xff0c;接收到 JSON 字符串后&#xff0c;可以通过 QJsonDocument 来解析 JSON 数据&#xff0c;获取字段值。同时&#xff0c;可以使用 QJsonDocument 将数据打包成 JSON 字符串&#xff0c;然后发送到 RabbitMQ 或其他地方。这个方法在 Qt 中非常常见且稳定。 …

Chrome 扩展开发 API实战:Proxy(七)

1. 引言 在现代浏览器生态中&#xff0c;代理设置是提升网络访问速度、保障隐私安全的重要手段。对于开发者而言&#xff0c;掌握如何在 Chrome 扩展程序中配置代理功能&#xff0c;不仅能满足特定的网络需求&#xff0c;还能为用户提供更灵活的上网体验。本文将以通俗易懂的语…