7步搞定wger健身服务:使用Docker Swarm实现高可用部署方案
wger是一款开源的健身追踪应用,支持自托管部署,可帮助用户记录 workouts、营养摄入和体重变化。本文将详细介绍如何使用Docker Swarm模式快速部署这套强大的健身服务,即使是新手也能轻松完成整个流程。[
- Docker环境:已安装Docker Engine和Docker Compose
- 节点配置:至少1个管理节点,推荐2GB内存以上
- 网络要求:开放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的登录界面。使用刚刚创建的超级用户账号登录,开始使用这套强大的健身追踪系统。
服务维护与扩展
监控服务状态
使用以下命令检查服务状态:
docker stack services wger
扩展服务实例
如需增加web服务实例以提高性能:
docker service scale wger_web=3
更新wger版本
- 拉取最新代码:
git pull - 重新部署服务栈:
docker stack deploy -c docker-compose.yml wger
总结
通过Docker Swarm部署wger健身服务,不仅简化了安装流程,还确保了服务的高可用性和可扩展性。这种部署方式特别适合家庭用户或小型健身房使用,既满足了数据隐私需求,又降低了维护难度。
现在,你已经拥有了一套功能完备的自托管健身追踪系统,开始记录你的健身旅程吧!无论是力量训练、有氧运动还是营养管理,wger都能成为你忠实的健身助手。
更多推荐



所有评论(0)