使用 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 服务器,非常适合私有包管理。如果你有任何问题或建议,欢迎在评论区留言!


参考链接

相关推荐
wbs_scy20 分钟前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
jinanwuhuaguo2 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup2 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
952363 小时前
SpringBoot统一功能处理
java·spring boot·后端
Lyyaoo.3 小时前
优惠券秒杀业务分析
java·开发语言
消失的旧时光-19433 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
勿忘初心12213 小时前
Java 国密 SM4 加密工具类实战(Hutool + BouncyCastle)|企业级数据加密 + 兼容 JDK8
java·数据安全·数据加密·后端开发·企业级开发·国密 sm4
庞轩px3 小时前
第8篇:原子类与CAS底层原理——无锁并发的实现
java·cas·乐观锁·aba·无锁编程·自旋
rleS IONS3 小时前
SpringBoot中自定义Starter
java·spring boot·后端
苍煜4 小时前
慢SQL优化实战教学
java·数据库·sql