首页
/ Magnetissimo项目Docker-Compose部署指南

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数据,确保数据持久化

部署步骤详解

  1. 准备环境:确保已安装Docker和Docker Compose
  2. 配置文件:将上述docker-compose.yml保存到项目目录
  3. 启动服务:执行docker-compose up -d命令
  4. 访问应用:浏览器打开http://localhost:4000
  5. 停止服务:使用docker-compose down命令

常见问题解决方案

  1. 端口冲突:如果4000端口被占用,可修改ports配置为"其他端口:4000"
  2. 数据库连接失败:检查PostgreSQL容器是否正常启动,确认环境变量配置正确
  3. 性能优化:对于生产环境,建议调整PostgreSQL的内存参数

安全建议

  1. 修改默认的PostgreSQL用户名和密码
  2. 为生产环境生成强密钥
  3. 考虑添加TLS/SSL加密
  4. 设置适当的防火墙规则限制访问

通过本指南,您可以快速部署Magnetissimo搜索服务,并根据实际需求进行定制化配置。这种容器化部署方式不仅简化了环境搭建过程,还提高了系统的可维护性和可移植性。