
Open Journal Systems (OJS)是一款期刊管理与发布系统,由Public Knowledge Project通过联邦资助开发,旨在扩大和改善研究成果的获取途径。
本仓库中的镜像最初基于Alpine Linux构建,但从3.5版本开始迁移到Debian镜像。可能包含其他额外变更。
仓库中的镜像有多个变体(参见版本)。本项目由Marc Bria维护。
镜像在Linux系统中构建和测试,理论上可在Windows上运行。目前暂未提供ARM架构镜像,因此无法在最新的Mac电脑上使用。
========================================================================================================================= == 警告 ========================================================================================================================= == == 我们正处于重构过程中,因此本描述可能已过时,部分信息可能不准确。 == 最新文档请始终参考 pkp/containers 仓库: == == - [***] == - [***] =========================================================================================================================
基本原则是“Docker镜像的名称与OJS***仓库中的标签名称相同”,但带有应用前缀。即,如果需要拉取OJS 3.3.0-17版本(***标签为3_3_0-17),只需拉取pkpofficial/ojs-3_3_0-17镜像。
同时维护latest、lts和stable标签的别名,更新规则如下:
| 标签 | 别名指向... | 描述 |
|---|---|---|
| latest | 3_4_0-4 | 最新发布版本 |
| lts | 3_3_0-17 | 最新LTS版本 |
| stable-3_2_1 | 3_2_1-4 | 指定分支的最新稳定版本 |
重要: 我们仅对刚发布的镜像以及标记为latest和LTS的版本进行安全检查。
镜像命名规则仍在讨论中(如LAMP环境需发布安全补丁时如何处理、是否提供最新镜像、如何处理Web服务器/PHP/使用变体等)。可在上述文档中评论或参与讨论。
确保已正确安装docker和docker-compose。
bashgit clone [***] journalName && cd journalName rm docs templates -Rf # 删除生产环境中无用的文件夹 vim .env # 根据需要设置环境变量(OJS版本、端口、URL等) source .env && wget "[***]{PKP_TOOL}/raw/${PKP_VERSION}/config.TEMPLATE.inc.php" -O ./volumes/config/pkp.config.inc.php sudo chown 33:33 ./volumes -R && sudo chown 999:999 ./volumes/db -R # 确保文件夹权限正确 docker compose up -d # 访问新站点并完成安装(数据库访问凭据见步骤5)
完整说明请参考 "easyOJS" 文档。
不同OJS版本与不同PHP版本(5至8)组合。未来计划添加不同Web服务器(Apache HTTP Server、nginx)的变体。
注意: 目前并非所有组合都可用!我们主要专注于Apache2。欢迎提交PR。
所有版本标签可在 Docker Hub Tags 标签页 查看。
(若标签中未提及Web服务器,则默认使用Apache)
镜像支持以下环境变量:
| 名称 | 默认值 | 说明 |
|---|---|---|
| SERVERNAME | localhost | 用于生成httpd.conf和证书 |
| PKP_TOOL | ojs | PKP工具(ojs、omp、ops),目前仅支持OJS |
| PKP_VERSION | 3_3_0-14 | 要部署的OJS版本 |
| COMPOSER_PROJECT_NAME | myjournal | 容器名称 |
| PKP_CLI_INSTALL | 0 | 启动容器时自动安装OJS(开发中) |
| DB_HOST | db | 数据库主机 |
| DB_USER | pkp | 数据库用户 |
| DB_PASSWORD | ojsPwd | 数据库密码 |
| DB_NAME | ojs | 数据库名称 |
| HTTP_PORT | 8080 | HTTP端口 |
| HTTPS_PORT | 8443 | HTTPS端口 |
注意: OJS_CLI_INSTALL和证书功能仍在开发中。
Docker内容默认是临时的,但某些数据需在容器重启后持久化(如数据库内容、上传文件、插件开发文件等)。默认版本文件夹中包含./volumes目录结构(默认禁用),需在docker-compose.yml中取消卷挂载注释并正确配置文件夹。
| 主机路径 | 容器 | 容器路径 | 描述 |
|---|---|---|---|
| ./volumes/public | app | /var/www/html/public | 所有公共文件 |
| ./volumes/private | app | /var/www/files | 所有私有文件(上传内容) |
| ./volumes/config/db.charset.conf | db | /etc/mysql/conf.d/charset.cnf | MariaDB配置文件 |
| ./volumes/config/pkp.config.inc.php | app | /var/www/html/config.inc.php | OJS配置文件 |
| ./volumes/config/php.custom.ini | app | /usr/local/etc/php/conf.d/custom.ini | PHP自定义配置 |
| ./volumes/config/apache.htaccess | app | /var/www/html/.htaccess | Apache2 htaccess文件 |
| ./volumes/logs/app | app | /var/log/apache2 | Apache2日志 |
| ./volumes/logs/db | db | /var/log/mysql | MariaDB日志 |
| ./volumes/db | db | /var/lib/mysql | MariaDB数据库内容 |
| ./volumes/migration | db | /docker-entrypoint-initdb.d | 数据库初始化文件夹(含SQL文件) |
| /etc/localtime | app | /etc/localtime | 与主机时钟同步 |
| TBD | app | /etc/ssl/apache2/server.pem | SSL证书(crt) |
| TBD | app | /etc/ssl/apache2/server.key | SSL密钥(key) |
本镜像使用相对路径的“绑定卷”,便于明确数据存储位置。使用前需确保存储文件夹存在且权限正确,可运行以下命令设置权限:
bash$ chown 33:33 ./volumes -R # Debian容器内www-data用户(uid 33/gid 33) $ chown 999:999 ./volumes/db -R $ chown 999:999 ./volumes/logs/db -R # MariaDB用户(uid 999/gid 999)
Dockerfile在/usr/local/bin中包含以下脚本,用于简化常见操作:
| 脚本 | 容器 | 描述 |
|---|---|---|
| pkp-run-scheduled | ojs | 运行php tools/runScheduledTasks.php,由cron每小时调用 |
| pkp-cli-install | ojs | 使用curl和预定义变量调用OJS安装程序 |
| pkp-pre-start | ojs | 强制设置部分配置变量,基于ServerName生成自签名证书 |
| pkp-upgrade | ojs | 运行php tools/upgrade.php upgrade(当config.inc.php为卷时可能有问题) |
| pkp-variable | ojs | 修改config.inc.php中的变量值(如:pkp-variable variable newValue) |
部分脚本仍处于测试阶段,使用时需注意。可通过docker compose exec在容器外调用:
bash$ docker compose exec app /usr/local/bin/pkp-variable session_check_ip Off
或使用docker exec:
bash$ docker exec -it pkp_app_journalname /usr/local/bin/pkp-variable session_check_ip Off
停止旧版本容器(如"pkpofficial/ojs:2_4_8-5"):
bashdocker compose stop
在.env文件中设置新版本(或直接修改docker-compose.yml),将旧版本(如2_4_5-2)替换为新版本(如3_2_1-4)。
拉取并启动新容器:
bash$ docker compose pull $ docker compose up -d
运行升级脚本:
bash$ docker compose up php tools/upgrade.php check && docker compose up php tools/upgrade.php upgrade
提示: 可通过docker ps -a | grep pkp_app查看OJS容器名称。
警告: 直接升级至最新稳定版需根据初始版本,推荐路径:2.x > 2.4.8-5 > 3.1.2-4 > 3.2.1-4 > 3.3.x-x
目前仅支持Apache2,配置文件和卷均针对Apache2设计。
无需构建本地镜像,可使用Docker Hub镜像并在docker-compose.yml中映射配置文件。例如,创建./volumes/config/php.custom.ini并取消对应卷注释即可自定义PHP设置。
默认启用RESTful URL,Apache已配置,无需在URL中使用index.php。
Apache启动时会检查SSL证书有效性及CN是否匹配SERVERNAME,若不匹配则生成新证书。可通过卷挂载自定义证书(见docker-compose.yml)。
注意: 此功能正在审核中,未来可能变更。
若前端有外部服务处理SSL连接,需在<VirtualHost *:80> section中添加PassENV HTTPS到ojs.conf。
克隆项目并提交PR,贡献新Dockerfile或docker-compose配置。版本文件基于templates目录下的模板生成,可通过build.sh脚本重新生成:
bash# 生成特定版本 $ ./build.sh 3_1_2-4 # 生成所有版本 $ ./build.sh
versions.list中。templates目录中创建所需文件(Dockerfile模板、docker-compose模板、配置文件等)。build.sh添加新堆栈(如webServers=( 'apache' 'nginx' ))。build.sh重新生成版本。build.sh和模板文件,忽略versions目录)。GPL3 © PKP
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429