使用 Docker Compose 部署
在继续操作之前,我们推荐您先阅读《写在前面》,这可以快速帮助你了解 Ikaros。
环境搭建
- Docker 安装文档:https://docs.docker.com/engine/install/
- Docker Compose 安装文档:https://docs.docker.com/compose/install/
我们推荐按照 Docker 官方文档安装 Docker 和 Docker Compose,因为部分 Linux 发行版软件仓库中的 Docker 版本可能过旧。
创建容器组
可用的 Ikaros 的 Docker 镜像:
目前 Ikaros 并未更新 Docker 的 latest 标签镜像,主要因为 暂未发布正式版本。我们推荐使用固定版本的标签,比如 ikarosrun/ikaros:v0.9.0
。
ikarosrun/ikaros:v0.9.0
:表示最新的可用镜像,每次发布时都会根据GitHub的标签构建一个新的镜像ikarosrun/ikaros:dev
:表示开发中的镜像,不推荐使用,每次Pull Request合并到主分支都会构建并覆盖该镜像。。
后续文档以 ikarosrun/ikaros:v0.9.0
为例。
在系统任意位置创建一个文件夹,此文档以
~/ikaros
为例。mkdir ~/ikaros && cd ~/ikaros
信息注意:后续操作中,Ikaros 产生的所有数据都会保存在这个目录,请妥善保存。
创建
docker-compose.yaml
此文档提供两种场景的 Docker Compose 配置文件,请根据你的需要选择一种。
创建 Ikaros + PostgreSQL 的实例:
~/ikaros/docker-compose.yamlversion: "3"
services:
# ikaros
ikaros:
image: ikarosrun/ikaros:v0.9.0
container_name: ikaros
restart: on-failure:3
depends_on:
ikaros_database:
condition: service_healthy
networks:
ikaros_networks:
volumes:
- ./:/root/.ikaros
ports:
- "9999:9999"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9999/actuator/health"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# 避免中日文文件名称乱码,需要设置文件编码,先通过命令 [locale -a] 查询下宿主机编码,有的是 [C] 有的是 [zh_CN],替换下方对应的字符
- LANG=C.UTF-8
- LANGUAGE=C:zh
- LC_ALL=C.UTF-8
- TZ=Asia/Shanghai
command:
- --logging.charset.console=UTF-8
- --logging.charset.file=UTF-8
# log level for package, such as INFO or DEBUG
- --logging.level.run.ikaros.server=INFO
- --logging.level.run.ikaros.plugin=INFO
- --logging.level.run.ikaros.jellyfin=INFO
- --sun.jnu.encoding=UTF-8
- --spring.r2dbc.url=r2dbc:pool:postgresql://ikaros_database/ikaros
- --spring.r2dbc.username=ikaros
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
# 初始化的超级管理员用户名
- --ikaros.security.initializer.master-username=tomoki
# 初始化的超级管理员密码
- --ikaros.security.initializer.master-password=tomoki
# ikaros database
ikaros_database:
image: postgres:latest
container_name: ikaros_database
restart: on-failure:3
networks:
ikaros_networks:
volumes:
- ./database:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_DB=ikaros
- POSTGRES_USER=ikaros
- POSTGRES_PASSWORD=openpostgresql
networks:
ikaros_networks:
driver: bridge仅创建 Ikaros 实例(使用默认的 H2 数据库,不推荐用于生产环境,建议体验和测试的时候使用):
~/ikaros/docker-compose.yamlversion: "3"
services:
# ikaros
ikaros:
image: ikarosrun/ikaros:v0.9.0
container_name: ikaros
restart: on-failure:3
networks:
ikaros_networks:
volumes:
- ./:/root/.ikaros
ports:
- "9999:9999"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9999/actuator/health"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# 避免中日文文件名称乱码,需要设置文件编码,先通过命令 [locale -a] 查询下宿主机编码,有的是 [C] 有的是 [zh_CN],替换下方对应的字符
- LANG=C.UTF-8
- LANGUAGE=C:zh
- LC_ALL=C.UTF-8
- TZ=Asia/Shanghai
command:
- --logging.charset.console=UTF-8
- --logging.charset.file=UTF-8
- --logging.level.run.ikaros.server=INFO
- --logging.level.run.ikaros.plugin=INFO
- --logging.level.run.ikaros.jellyfin=INFO
- --sun.jnu.encoding=UTF-8
# 初始化的超级管理员用户名
- --ikaros.security.initializer.master-username=tomoki
# 初始化的超级管理员密码
- --ikaros.security.initializer.master-password=tomoki
networks:
ikaros_networks:
driver: bridge
参数详解:
参数名 描述 spring.r2dbc.url
数据库连接地址,详细可查阅下方的 数据库配置
spring.r2dbc.username
数据库用户名 spring.r2dbc.password
数据库密码 spring.sql.init.platform
数据库平台名称,支持 postgresql
、h2
ikaros.security.initializer.master-username
初始超级管理员用户名, 默认 tomoki
ikaros.security.initializer.master-password
初始超级管理员密码, 第一次运行程序打印在控日志里 数据库配置:
链接方式 链接地址格式 spring.sql.init.platform
PostgreSQL r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}
postgresql H2 Database r2dbc:h2:file:///${ikaros.work-dir}/db/ikaros?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
h2 启动 Ikaros 服务
docker-compose up -d
实时查看日志:
docker-compose logs -f ikaros
用浏览器访问
/console
即可进入 Ikaros 管理页面,用户名和密码为在docker-compose.yaml
文件中设置的master-username
和master-password
。
如没有用这两个参数启动,则默认的用户名是 tomoki
,密码在打印在日志里(只有首次运行会打印密码)。
更新容器组
停止运行中的容器组
cd ~/ikaros && docker-compose down
备份数据(重要)
cp -r ~/ikaros ~/ikaros.archive
需要注意的是,
ikaros.archive
文件名不一定要根据此文档命名,这里仅仅是个示例。更新 Ikaros 服务
修改
docker-compose.yaml
中配置的镜像版本。services:
ikaros:
image: ikarosrun/ikaros:v0.9.0
container_name: ikarosdocker-compose pull ikaros
docker-compose up -d