前言
在前一篇博文(什么是 Gitea?)中,我们详细介绍了gitea的功能特性,以及其与其它git服务器之间的特性多维度对比。
在本文中,我们将详细介绍gitea的快捷安装部署,docker方式!
1. 特殊环境变量介绍
- USER:git:容器内运行Gitea的用户的用户名。
- USER_UID:1000:在容器内运行 Gitea 的用户的 UID(Unix 用户 ID)。如果使用主机卷,则将其与卷所有者的 UID 匹配/data(命名卷则不需要)。
- USER_GID:1000:在容器内运行 Gitea 的用户的 GID(Unix 组 ID)。如果使用主机卷,则将其与卷所有者的 GID 匹配/data(命名卷则不需要)。
2. 最简化安装,数据库基于SQLite3
最简单的设置只是创建一个卷和一个网络,然后将映像gitea/gitea:latest 作为服务启动。由于没有可用的数据库,可以使用 SQLite3 进行初始化。创建一个目录,如 ,gitea并将以下内容粘贴到名为 的文件中docker-compose.yml。请注意,卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您没有为卷提供正确的权限,容器可能无法启动。对于稳定版本,您可以使用:latest,**:1**或指定某个版本,如:@version@,但如果您想使用 Gitea 的最新开发版本,那么您可以使用 标签:nightly。如果您想从发布分支运行最新的提交,您可以使用 标签:1.x-nightly,其中 x 是 Gitea 的次要版本。(例如:1.16-nightly)
version:"3"networks:gitea:external:falseservices:server:image: gitea/gitea:@version@
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"
3. 基于MySQL数据存储docker部署
要与 MySQL 数据库结合启动 Gitea,请将这些更改应用到 docker-compose.yml上面创建的文件。
version:"3"networks:gitea:external:falseservices:server:image: gitea/gitea:@version@
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: 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
4. 基于PostgreSQL数据存储docker部署
要与 PostgreSQL 数据库结合启动 Gitea,请将这些更改应用到docker-compose.yml上面创建的文件。
version:"3"networks:gitea:external:falseservices:server:image: gitea/gitea:@version@
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: postgres:14+ restart: always
+ environment:
+ - POSTGRES_USER=gitea
+ - POSTGRES_PASSWORD=gitea
+ - POSTGRES_DB=gitea
+ networks:
+ - gitea
+ volumes:
+ - ./postgres:/var/lib/postgresql/data
5. 基于docker脚本部署,非docker-compose
本安装方式以postgresql为例进行介绍
5.1 创建一个私有子网
# 创建一个私有子网docker network create compEnvInner;
5.2 初始化pg数据库
# 初始化pg数据库docker run \--restart=always \--privileged=true \--network=host \
--shm-size 4G \--net compEnvInner \-p5432:5432 \-ePOSTGRES_DB=postgres \-ePOSTGRES_USER=postgres \-ePOSTGRES_PASSWORD="password"\-ePGDATA=/data/data \-ePGPORT=5432\-eTZ=Asia/Shanghai \--volume /data/docker-containers/postgres/data:/data/data \--name postgres-comp \-d postgres:16.3
5.3 初始化gitea
这一步尤为关键的是用到docker–link属性,将上一步创建postgresql容器互联在一起!是其在同一个docker网络下能互通!
# –link 容器互联,其他容器名映射为内部容器名称,使用内部容器名称就可以访问外部容器# --link container_a:alias_name# container_a是已存在的容器名称。alias_name是可选的别名,如果未指定,则默认为container_a的容器名。docker run -it--name gitea --restart always --privileged=true \--network=compEnvInner \-eUSER_UID=1000\-eUSER_GID=1000\-eGITEA__database__DB_TYPE=postgres \-eGITEA__database__HOST=postgres:5432 \-eGITEA__database__NAME=gitea \-eGITEA__database__USER=postgres \-eGITEA__database__PASSWD="password"\-v /data/docker-containers/gitea:/data \-v /etc/timezone:/etc/timezone:ro \-v /etc/localtime:/etc/localtime:ro \-p3000:3000 \-p222:22 \--link postgres-comp:postgres \-d registry.cn-hangzhou.aliyuncs.com/sinhy/gitea:latest
6.0 总结
以上重点介绍了四种关于gitea的docker安装部署方法,分别是基于docker-compose方式部署的默认的基于SQLite3、基于MySQL安装、基于PostgreSQL安装和最后介绍的纯docker脚本(非docker-compose)部署。
版权归原作者 码踏云端 所有, 如有侵权,请联系我们删除。