跳到主要内容
版本:0.15

使用 Docker Compose 部署

信息

在继续操作之前,我们推荐您先阅读《写在前面》,这可以快速帮助你了解 Ikaros。

环境搭建

提示

我们推荐按照 Docker 官方文档安装 Docker 和 Docker Compose,因为部分 Linux 发行版软件仓库中的 Docker 版本可能过旧。

创建容器组

可用的 Ikaros 的 Docker 镜像:

注意

目前 Ikaros 并未更新 Docker 的 latest 标签镜像,主要因为 暂未发布正式版本。我们推荐使用固定版本的标签,比如 ikarosrun/ikaros:v0.15.6

  • ikarosrun/ikaros:v0.15.6:表示最新的可用镜像,每次发布时都会根据GitHub的标签构建一个新的镜像
  • ikarosrun/ikaros:dev:表示开发中的镜像,不推荐使用,每次Pull Request合并到主分支都会构建并覆盖该镜像。。

后续文档以 ikarosrun/ikaros:v0.15.6 为例。

  1. 在系统任意位置创建一个文件夹,此文档以 ~/ikaros 为例。

    mkdir ~/ikaros && cd ~/ikaros
    信息

    注意:后续操作中,Ikaros 产生的所有数据都会保存在这个目录,请妥善保存。

  2. 创建 docker-compose.yaml

    此文档提供两种场景的 Docker Compose 配置文件,请根据你的需要选择一种

    1. 创建 Ikaros + PostgreSQL 的实例:

      ~/ikaros/docker-compose.yaml
      version: "3"
      services:
      # ikaros
      ikaros:
      image: ikarosrun/ikaros:v0.15.6
      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:
      - 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
      # Flayway
      - --spring.flyway.url=jdbc:postgresql://ikaros_database/ikaros
      - --spring.flyway.locations=classpath:db/postgresql/migration
      - --spring.flyway.user=ikaros
      - --spring.flyway.password=openpostgresql
      # ikaros 外部访问地址 需要根据自己的情况进行修改 影响的功能包括不限于API文档等
      - --ikaros.external-url=http://localhost:9999
      # 初始化的超级管理员用户名
      - --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
    2. 仅创建 Ikaros 实例(使用默认的 H2 数据库,不推荐用于生产环境,建议体验和测试的时候使用):

      ~/ikaros/docker-compose.yaml
      version: "3"
      services:
      # ikaros
      ikaros:
      image: ikarosrun/ikaros:v0.15.6
      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:
      - 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 外部访问地址 需要根据自己的情况进行修改 影响的功能包括不限于API文档等
      - --ikaros.external-url=http://localhost:9999
      # 初始化的超级管理员用户名
      - --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数据库平台名称,支持 postgresqlh2
    ikaros.security.initializer.master-username初始超级管理员用户名, 默认 tomoki
    ikaros.security.initializer.master-password初始超级管理员密码, 第一次运行程序打印在控日志里
    ikaros.external-url外部访问地址,需要根据自己的情况进行修改,影响的功能包括不限于API文档等,比如: https://demo.ikaros.run

    数据库配置:

    链接方式链接地址格式spring.sql.init.platform
    PostgreSQLr2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}postgresql
    H2 Databaser2dbc:h2:file:///${ikaros.work-dir}/db/ikaros?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSEh2
  3. 启动 Ikaros 服务

    docker-compose up -d

    实时查看日志:

    docker-compose logs -f ikaros
  4. 用浏览器访问 /console 即可进入 Ikaros 管理页面,用户名和密码为在 docker-compose.yaml 文件中设置的 master-usernamemaster-password

提示

如没有用这两个参数启动,则默认的用户名是 tomoki,密码在打印在日志里(只有首次运行会打印密码)。

更新容器组

  1. 停止运行中的容器组

    cd ~/ikaros && docker-compose down
  2. 备份数据(重要)

    cp -r ~/ikaros ~/ikaros.archive

    需要注意的是,ikaros.archive 文件名不一定要根据此文档命名,这里仅仅是个示例。

  3. 更新 Ikaros 服务

    修改 docker-compose.yaml 中配置的镜像版本。

    services:
    ikaros:
    image: ikarosrun/ikaros:v0.15.6
    container_name: ikaros
    docker-compose pull ikaros
    docker-compose up -d