Magnetissimo项目Docker-Compose部署指南
2025-07-10 03:49:51作者:仰钰奇
项目概述
Magnetissimo是一个基于Elixir语言开发的资源链接搜索引擎,它能够从多个来源聚合资源链接信息,为用户提供便捷的资源搜索服务。本项目采用Docker容器化部署方式,通过docker-compose工具可以快速搭建完整的运行环境。
核心组件解析
1. 数据库服务配置
postgres:
container_name: postgres
image: postgres:15.2-alpine
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=magnetissimo
networks:
- magnetissimo
volumes:
- "pgdata:/var/lib/postgresql/data"
- 镜像选择:使用PostgreSQL 15.2的Alpine版本,这是一个轻量级的Linux发行版,适合容器化部署
- 持久化存储:通过命名卷
pgdata
将数据库文件持久化,确保容器重启后数据不丢失 - 网络配置:加入专用网络
magnetissimo
,实现容器间安全通信 - 环境变量:配置了默认的用户名、密码和数据库名称,生产环境应修改这些默认值
2. 应用服务配置
magnetissimo:
container_name: magnetissimo
image: ghcr.io/sergiotapia/magnetissimo:master
restart: unless-stopped
environment:
- DATABASE_URL=postgres://postgres:postgres@postgres:5432/magnetissimo
networks:
- magnetissimo
ports:
- "4000:4000/tcp"
depends_on:
- postgres
- 镜像来源:使用项目官方构建的最新master分支镜像
- 端口映射:将容器内的4000端口映射到宿主机的4000端口
- 依赖关系:明确声明依赖PostgreSQL服务,确保数据库先启动
- 环境配置:通过
DATABASE_URL
指定数据库连接字符串,格式为postgres://用户名:密码@主机:端口/数据库名
高级配置选项
1. 生产环境配置建议
# 取消注释并替换为您的实际域名
# - PHX_HOST=magnetissimo.domain.tld
# 取消注释并填入生成的密钥
# 生成方式:
# openssl rand -base64 64
# 或
# mix phx.gen.secret
# - SECRET_KEY_BASE=
- PHX_HOST:当部署到非localhost环境时,必须设置此变量以避免WebSocket连接错误
- SECRET_KEY_BASE:用于加密会话等重要数据,生产环境必须设置
2. 网络与存储配置
networks:
magnetissimo:
volumes:
pgdata:
driver: local
- 专用网络:创建独立的Docker网络,隔离容器间的通信
- 数据卷:使用本地驱动存储PostgreSQL数据,确保数据持久化
部署步骤详解
- 准备环境:确保已安装Docker和Docker Compose
- 配置文件:将上述docker-compose.yml保存到项目目录
- 启动服务:执行
docker-compose up -d
命令 - 访问应用:浏览器打开
http://localhost:4000
- 停止服务:使用
docker-compose down
命令
常见问题解决方案
- 端口冲突:如果4000端口被占用,可修改ports配置为
"其他端口:4000"
- 数据库连接失败:检查PostgreSQL容器是否正常启动,确认环境变量配置正确
- 性能优化:对于生产环境,建议调整PostgreSQL的内存参数
安全建议
- 修改默认的PostgreSQL用户名和密码
- 为生产环境生成强密钥
- 考虑添加TLS/SSL加密
- 设置适当的防火墙规则限制访问
通过本指南,您可以快速部署Magnetissimo搜索服务,并根据实际需求进行定制化配置。这种容器化部署方式不仅简化了环境搭建过程,还提高了系统的可维护性和可移植性。