OpenBoxes医疗供应链
步骤一:环境准备
确保服务器满足:
- 操作系统:Linux(Ubuntu 22.04/24.04 推荐)
- 内存:至少 2GB(推荐 4GB,官方成本指南提到 4GB 内存可支撑约 50 并发用户-15)
- Docker:Docker Engine v24 或更高版本-3
- Docker Compose:已安装
docker --version
docker compose version步骤二:创建项目目录
mkdir -p /opt/openboxes
cd /opt/openboxes步骤三:创建 docker-compose.yml
官方在 openboxes/openboxes-docker 仓库中提供了 Compose 文件模板。以下是一个精简后的配置,将 OpenBoxes 应用和 MySQL 数据库组合在一起:
version: '3.7'
services:
db:
image: mysql:8.0
container_name: openboxes-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: YourStrongRootPassword
MYSQL_DATABASE: openboxes
MYSQL_USER: openboxes
MYSQL_PASSWORD: YourStrongDbPassword
volumes:
- ./db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 10
openboxes:
image: ghcr.io/openboxes/openboxes:latest
container_name: openboxes
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "8080:8080"
environment:
DATASOURCE_URL: "jdbc:mysql://db:3306/openboxes?useSSL=false&allowPublicKeyRetrieval=true"
DATASOURCE_USERNAME: openboxes
DATASOURCE_PASSWORD: YourStrongDbPassword
volumes:
- ./openboxes_data:/app/data关键配置说明:
| 配置项 | 说明 |
|---|---|
MYSQL_ROOT_PASSWORD | 数据库 root 密码,必须修改 |
MYSQL_PASSWORD | OpenBoxes 数据库用户密码,必须修改 |
DATASOURCE_URL | JDBC 连接字符串,db 是服务名 |
allowPublicKeyRetrieval=true | MySQL 8 连接所需 |
端口 8080:8080 | 访问端口,可改为其他端口 |
安全警告:默认密码仅为示例,任何暴露到公网的部署都必须修改所有密码。
步骤四:启动服务
docker compose up -d首次启动会拉取 OpenBoxes 和 MySQL 镜像,可能需要几分钟。检查状态:
docker compose ps等待 db 服务变为 healthy,然后查看 OpenBoxes 日志:
docker compose logs -f openboxes等待看到应用启动完成的消息(通常包含 Grails application running 或类似信息)。
步骤五:访问系统
在浏览器中打开:
http://你的服务器IP:8080/openboxes默认登录凭据(首次启动自动创建):
- 用户名:admin
- 密码:password
登录后立即修改密码。
注意:官方文档说明,首次启动可能需要等待应用完成数据库初始化。如果页面显示错误,等待 30 秒后刷新。
步骤六:初始配置
登录后建议完成:
修改管理员密码:在用户设置中修改。
配置位置(Locations):根据你的仓库结构,创建主仓库、药房、病房等位置。这是使用请领功能的前提。
导入或创建产品目录:可以手动创建,也可以通过 CSV 导入。产品需要设定原子计量单位(如 box、ea、case),系统不支持单位换算,所以这一步要慎重。
设置库存水平(可选):为关键产品设置最小库存和再订货点,系统会自动生成再订货报表。
后续维护命令
查看日志:
docker compose logs -f openboxes
docker compose logs -f db停止服务:
docker compose down更新到新版本:
cd /opt/openboxes
docker compose pull
docker compose up -d备份数据库:
docker compose exec db mysqldump -uopenboxes -popenboxes openboxes > backup-$(date +%Y%m%d).sql备份数据目录:备份 /opt/openboxes 下的 db_data 和 openboxes_data 目录。
常见问题
问题:访问 8080 端口显示 502 或连接被拒绝?
应用可能还在启动中。查看 docker compose logs -f openboxes,等待应用完全启动。如果持续失败,检查数据库健康状态 docker compose ps。
问题:想用宿主机上的 MySQL 而不是容器?
官方提供了 docker-compose-hostdb.yml 处理这种情况,或者通过设置 DATASOURCE_URL 指向 host.docker.internal:3306 并添加 --add-host host.docker.internal:host-gateway。
问题:如何配置 HTTPS?
OpenBoxes 容器本身不处理 TLS。推荐在前面加 Nginx 或 Caddy 反向代理。AWS 部署方案中建议使用 Route 53 + ACM 证书 + ALB 的组合。
问题:单位换算怎么处理?
OpenBoxes 目前不支持自动 UoM 换算,也不支持小数单位-11。建议在创建产品时选择最小的实际使用单位作为原子单位(例如,如果最终按盒出库,就用“盒”而不是“箱”),并在产品描述中明确标注单位。
问题:如何模拟“销售订单”?
官方建议的变通方案:创建一个代表客户的新位置,针对你的仓库生成采购订单,然后履行该订单,以此近似销售订单的效果。