7步搞定wger健身服务:使用Docker Swarm实现高可用部署方案

【免费下载链接】wger Self hosted FLOSS fitness/workout, nutrition and weight tracker written with Django 【免费下载链接】wger 项目地址: https://gitcode.com/GitHub_Trending/wg/wger

wger是一款开源的健身追踪应用,支持自托管部署,可帮助用户记录 workouts、营养摄入和体重变化。本文将详细介绍如何使用Docker Swarm模式快速部署这套强大的健身服务,即使是新手也能轻松完成整个流程。

wger健身服务概览 图1:wger健身服务支持锻炼追踪、营养管理和体重监控三大核心功能

为什么选择Docker Swarm部署wger?

Docker Swarm提供了简单而强大的容器编排能力,特别适合中小型应用的高可用部署。对于wger这类需要持久化数据且要求稳定运行的健身服务,Swarm模式具有以下优势:

  • 简化管理:通过声明式配置文件管理服务生命周期
  • 自动恢复:容器故障时自动重启,保证服务连续性
  • 负载均衡:内置服务发现和负载均衡能力
  • 滚动更新:支持零停机部署新版本

wger多端界面展示 图2:wger提供响应式设计,完美支持桌面和移动设备访问

前期准备:部署环境要求

在开始部署前,请确保你的环境满足以下条件:

  1. 操作系统:Linux系统(推荐Ubuntu 20.04+或Debian 11+)
  2. Docker环境:已安装Docker Engine和Docker Compose
  3. 节点配置:至少1个管理节点,推荐2GB内存以上
  4. 网络要求:开放2377/tcp、7946/tcp/udp和4789/udp端口

部署步骤:从0到1搭建wger服务

步骤1:初始化Docker Swarm集群

首先通过以下命令初始化Swarm集群(在管理节点执行):

docker swarm init --advertise-addr <你的服务器IP>

如果需要添加工作节点,按照命令输出的提示在其他服务器上执行相应命令。

步骤2:获取wger源代码

克隆官方仓库到服务器:

git clone https://gitcode.com/GitHub_Trending/wg/wger
cd wger

步骤3:创建Docker Compose配置文件

在项目根目录创建docker-compose.yml文件,内容如下:

version: '3.8'
services:
  db:
    image: postgres:13
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_PASSWORD=wgerdbpass
      - POSTGRES_USER=wger
      - POSTGRES_DB=wger
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure

  web:
    build: .
    command: gunicorn wger.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - static_volume:/app/static
      - media_volume:/app/media
    environment:
      - DATABASE_URL=postgres://wger:wgerdbpass@db:5432/wger
      - SECRET_KEY=your-secret-key-here
      - DEBUG=0
    depends_on:
      - db
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - static_volume:/var/www/static
      - media_volume:/var/www/media
    depends_on:
      - web
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure

volumes:
  postgres_data:
  static_volume:
  media_volume:

步骤4:配置Nginx反向代理

创建Nginx配置目录和文件:

mkdir -p nginx/conf.d
cat > nginx/conf.d/wger.conf << EOF
server {
    listen 80;
    server_name localhost;

    location /static/ {
        alias /var/www/static/;
    }

    location /media/ {
        alias /var/www/media/;
    }

    location / {
        proxy_pass http://web:8000;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
    }
}
EOF

步骤5:部署wger服务栈

使用Docker Stack命令部署服务:

docker stack deploy -c docker-compose.yml wger

步骤6:初始化数据库

服务启动后,需要执行数据库迁移和创建超级用户:

# 获取web服务容器ID
WEB_CONTAINER=$(docker ps --filter name=wger_web -q | head -n 1)

# 执行数据库迁移
docker exec -it $WEB_CONTAINER python manage.py migrate

# 创建超级用户
docker exec -it $WEB_CONTAINER python manage.py createsuperuser

步骤7:访问wger服务

在浏览器中访问服务器IP地址,即可看到wger的登录界面。使用刚刚创建的超级用户账号登录,开始使用这套强大的健身追踪系统。

wger营养计划界面 图3:wger的营养计划功能帮助用户科学管理饮食摄入

服务维护与扩展

监控服务状态

使用以下命令检查服务状态:

docker stack services wger

扩展服务实例

如需增加web服务实例以提高性能:

docker service scale wger_web=3

更新wger版本

  1. 拉取最新代码:git pull
  2. 重新部署服务栈:docker stack deploy -c docker-compose.yml wger

总结

通过Docker Swarm部署wger健身服务,不仅简化了安装流程,还确保了服务的高可用性和可扩展性。这种部署方式特别适合家庭用户或小型健身房使用,既满足了数据隐私需求,又降低了维护难度。

现在,你已经拥有了一套功能完备的自托管健身追踪系统,开始记录你的健身旅程吧!无论是力量训练、有氧运动还是营养管理,wger都能成为你忠实的健身助手。

【免费下载链接】wger Self hosted FLOSS fitness/workout, nutrition and weight tracker written with Django 【免费下载链接】wger 项目地址: https://gitcode.com/GitHub_Trending/wg/wger

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐