使用 Docker 部署 BaGet 并推送 NuGet 包

使用 Docker 部署 BaGet 并推送 NuGet 包

简介

BaGet 是一个轻量级的 NuGet 服务器,适用于私有 NuGet 包管理。本文将介绍如何使用 Docker 部署 BaGet,如何推送 NuGet 包,以及如何从另一台服务器备份数据。


目录

  1. [部署 BaGet](#部署 BaGet)
  2. [推送 NuGet 包](#推送 NuGet 包)
    • 推送单个包
    • 推送多个包
  3. 备份数据
  4. 总结

部署 BaGet

1. 创建 docker-compose.yml 文件

首先,创建一个 docker-compose.yml 文件来定义 BaGet 服务:

yaml 复制代码
version: '3.4'

services:
  baget:
    image: loicsharma/baget:latest
    container_name: baget
    environment:
      - Baget__ApiKey=your_api_key
      - Baget__Storage__Type=FileSystem
      - Baget__Storage__Path=/var/baget/packages
      - Baget__Database__Type=Sqlite
      - Baget__Database__ConnectionString=Data Source=/var/baget/baget.db
    volumes:
      - ./data:/var/baget
    ports:
      - "6688:80"
    restart: unless-stopped
参数说明:
  • Baget__ApiKey:API 密钥,用于保护 BaGet。
  • Baget__Storage__Type:存储类型,这里使用文件系统。
  • Baget__Storage__Path:包存储路径。
  • Baget__Database__Type:数据库类型,这里使用 SQLite。
  • Baget__Database__ConnectionString:SQLite 数据库路径。
  • volumes:将本地目录挂载到容器中,以便持久化数据。
  • ports:将容器的 80 端口映射到主机的 6688 端口。

2. 启动 BaGet

运行以下命令启动 BaGet:

bash 复制代码
docker-compose up -d

启动后,BaGet 将在 http://localhost:6688 运行。


推送 NuGet 包

1. 推送单个包

使用 dotnet nuget push 命令推送单个 NuGet 包:

bash 复制代码
dotnet nuget push mokk.commons.2.3.6.nupkg -s http://192.168.1.1:6688/v3/index.json -k your_api_key
参数说明:
  • mokk.commons.2.3.6.nupkg:要推送的 NuGet 包文件。
  • -s:指定 NuGet 服务器的源地址。
  • -k:API 密钥(如果 BaGet 设置了 Baget__ApiKey)。

2. 推送多个包

如果需要推送多个包,可以使用以下方法:

方法 1: 使用通配符
bash 复制代码
dotnet nuget push *.nupkg -s http://192.168.1.1:6688/v3/index.json -k your_api_key
方法 2: 使用 PowerShell 脚本
powershell 复制代码
$packages = Get-ChildItem -Path "C:\path\to\packages\*.nupkg"
foreach ($package in $packages) {
    dotnet nuget push $package.FullName -s http://192.168.1.1:6688/v3/index.json -k your_api_key
}
方法 3: 使用 Bash 脚本
bash 复制代码
for package in /path/to/packages/*.nupkg; do
    dotnet nuget push "$package" -s http://192.168.1.1:6688/v3/index.json -k your_api_key
done

备份数据

BaGet 的数据存储在挂载的 ./data 目录中。你可以使用以下方法从另一台服务器备份这些数据:

1. 使用 rsync 备份

在备份服务器上运行以下命令:

bash 复制代码
rsync -avz -e ssh user@baget_server_ip:/path/to/data /backup/path/on/backup/server

2. 使用 scp 备份

bash 复制代码
scp -r user@baget_server_ip:/path/to/data /backup/path/on/backup/server

3. 定期备份

可以通过设置 cron 任务实现定期备份。例如,每天凌晨 2 点备份:

bash 复制代码
0 2 * * * rsync -avz -e ssh user@baget_server_ip:/path/to/data /backup/path/on/backup/server

总结

通过本文,你已经学会了:

  1. 如何使用 Docker 部署 BaGet。
  2. 如何推送单个或多个 NuGet 包到 BaGet。
  3. 如何从另一台服务器备份 BaGet 数据。

BaGet 是一个简单易用的 NuGet 服务器,非常适合私有包管理。如果你有任何问题或建议,欢迎在评论区留言!


参考链接

相关推荐
UQR12 小时前
一、Java基础高频面试题
java·开发语言
AC赳赳老秦12 小时前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
上海云盾商务经理杨杨12 小时前
Tomcat 弱配置漏洞渗透实战!批量 getshell 高频漏洞
java·web安全·tomcat
10mAh12 小时前
【Linux】error while loading shared libraries 怎么解决?——ldd、RPATH 与动态链接排错
java·linux·前端
深念Y12 小时前
stable-diffusion.cpp 的 FLUX.2 Klein 9B 分步
java·前端·数据库
承渊政道12 小时前
飞牛NAS部署Immich:搭建家庭相册并实现远程访问
运维·服务器·docker·内网穿透·cpolar·nas·immich
x-cmd12 小时前
用 Rust 打造 AI 时代的 SQL:把重复任务变成可执行文件
数据库·人工智能·sql·ai·容器·rust·workflow
阿pin12 小时前
Java随笔-红黑树
java·python·算法·红黑树
我命由我1234512 小时前
Jetpack Compose - @Preview 注解
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
为美好的生活献上中指12 小时前
Spring AI Advisor 深度实战:构建严谨的 AI Agent 拦截链
java·人工智能·spring·advisor·aiagent