首页
/ 使用Docker部署OneDev与PostgreSQL数据库完整指南

使用Docker部署OneDev与PostgreSQL数据库完整指南

2025-07-08 03:54:34作者:卓炯娓

前言

OneDev是一款功能强大的自托管Git服务器,集成了CI/CD流水线、看板管理、代码搜索等开发工具链功能。本教程将详细介绍如何通过Docker容器化方式快速部署OneDev服务,并使用PostgreSQL作为后端数据库。

系统要求

  • 任何Linux发行版服务器
  • Docker引擎(本教程包含安装步骤)
  • Docker Compose工具

准备工作

1. 清理旧版Docker组件

如果系统中已安装旧版Docker,建议先执行卸载:

sudo apt-get purge docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

2. 安装最新Docker引擎

执行以下命令获取并运行Docker官方安装脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh

验证安装是否成功:

docker --version

部署OneDev服务

1. 创建项目目录

mkdir onedev-with-postgres && cd onedev-with-postgres

2. 准备docker-compose.yml文件

创建并编辑docker-compose.yml文件,内容如下(注意需要修改标记为changeMe的配置项):

version: '3.8'

services:
   app:
      hostname: 'onedev'
      image: '1dev/server:latest'
      container_name: 'onedev-app'
      restart: unless-stopped
      environment:
         - hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect
         - hibernate_connection_driver_class=org.postgresql.Driver
         - hibernate_connection_url=jdbc:postgresql://onedev-db:5432/onedev
         - hibernate_connection_username=onedev-user
         - hibernate_connection_password=changeMe.aHighlyComplexPasswordToKeepYouSecure
         - initial_user=changeMe.user
         - initial_password=changeMe.password
         - initial_email=changeMe.email@example.com
         - initial_server_url=https://changeMe.example.com
         - initial_ssh_root_url=ssh://changeMe.example.com
      volumes:
         - 'onedev-app-data-vol:/opt/onedev'
         - '/var/run/docker.sock:/var/run/docker.sock'
      networks:
         - 'onedev-network'
      ports:
         - '6610:6610'
      depends_on:
         db:
            condition: service_healthy
   db:
      hostname: 'postgresql'
      image: 'postgres:latest'
      container_name: 'onedev-db'
      restart: 'unless-stopped'
      networks:
         - 'onedev-network'
      environment:
         - POSTGRES_USER=onedev-user
         - POSTGRES_PASSWORD=changeMe.aHighlyComplexPasswordToKeepYouSecure
         - POSTGRES_DB=onedev
      volumes:
         - 'onedev-db-postgresql-vol:/var/lib/postgresql'
         - 'onedev-db-postgresql-data-vol:/var/lib/postgresql/data'
      healthcheck:
         test: ["CMD-SHELL", "pg_isready"]
         interval: 1m
         timeout: 5s
         retries: 5

volumes:
   onedev-app-data-vol:
      name: 'onedev-app-data-vol'
   onedev-db-postgresql-vol:
      name: 'onedev-db-postgresql-vol'
   onedev-db-postgresql-data-vol:
      name: 'onedev-db-postgresql-data-vol'

networks:
   onedev-network:
      name: 'onedev-network'

3. 关键配置说明

  1. 数据库连接配置

    • hibernate_connection_password:PostgreSQL数据库密码
    • POSTGRES_PASSWORD:必须与上述密码一致
  2. 初始管理员账户

    • initial_user:首次登录的管理员用户名
    • initial_password:管理员密码
    • initial_email:管理员联系邮箱
  3. 网络访问配置

    • initial_server_url:服务访问URL(如https://git.yourdomain.com)
    • initial_ssh_root_url:SSH访问地址(如ssh://git.yourdomain.com)
    • ports:主机端口映射(左侧可修改为其他端口)

4. 启动服务

docker compose up -d

5. 检查服务状态

docker ps -a

等待约2-3分钟,直到onedev-db容器状态显示为healthy,且onedev-app容器状态为running。

访问与验证

服务启动完成后,通过浏览器访问:

http://<服务器IP>:6610

如果无法访问,请检查:

  1. 服务器防火墙设置(需开放6610端口)
  2. 反向代理配置(如使用Nginx等)
  3. 容器日志:docker logs onedev-app

数据持久化说明

本配置已设置以下数据卷确保数据安全:

  • onedev-app-data-vol:存储OneDev应用数据
  • onedev-db-postgresql-vol:PostgreSQL数据库文件
  • onedev-db-postgresql-data-vol:PostgreSQL数据目录

安全建议

  1. 务必修改所有默认密码(特别是数据库密码)
  2. 建议配置HTTPS访问(可通过反向代理实现)
  3. 定期备份数据卷内容
  4. 保持Docker和OneDev镜像为最新版本

常见问题处理

Q:容器启动后无法访问服务 A:检查端口映射是否正确,确保主机防火墙已开放对应端口。

Q:数据库连接失败 A:验证docker-compose.yml中的数据库密码是否一致,检查数据库容器日志。

Q:忘记管理员密码 A:需要删除数据卷重新初始化,或通过数据库直接修改(不推荐)。

结语

通过本教程,您已成功部署了一个功能完整的OneDev服务,包含:

  • 代码仓库管理
  • CI/CD流水线
  • 问题跟踪系统
  • 看板管理
  • 代码搜索与导航

OneDev的容器化部署方式大大简化了安装和维护流程,结合PostgreSQL数据库可确保服务稳定运行。后续可根据需要进一步配置邮件通知、OAuth集成等高级功能。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
866
513
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
261
302
kernelkernel
deepin linux kernel
C
22
5
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
598
57
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K