Skip to content

容器化方式部署

Wendell Sun edited this page Dec 11, 2017 · 21 revisions

最简方式部署

使用MySQL存储

配置项说明

升级说明

Docker环境对于ignite服务来说是不可或缺的,ignite需要使用Docker来创建用户的容器服务,同样,你也可以通过Docker来部署ignite服务,达到一切皆容器的效果。相较于手动方式部署,容器化方式部署更加方便快捷,也减少出错的可能。

部署需要使用docker-compose工具,如果你对它不了解,请先学习如何使用它,后续对docker-compose的使用细节不做赘述。如果还没有在服务器上安装docker-compose,请参考docker-compose快速安装文档

以下贴出的docker-compose配置已经提交到ignite-docker仓库下。

最简方式部署

通过创建docker-compose.yml,直接进行部署:

version: '3'

services:

  ignite:
    container_name: ignite
    image: goignite/ignite
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - HOST_ADDRESS=server-ip-address
    ports:
      - "5000:5000"
    restart: always

  ignite-admin:
    container_name: ignite-admin
    image: goignite/ignite-admin
    volumes:
      - "./data:/root/ignite/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - AUTH_USERNAME=admin
      - AUTH_PASSWORD=admin_password
      - Auth_SECRET=ignite2017
    ports:
      - "8000:8000"
    restart: always

通过运行docker-compose up -d,即可启动ignite和ignite-admin服务,数据保存在docker-compose.yml文件同级的data目录下,你可以修改挂载的存储目录,但注意,要修改两处,确保挂载到ignite和ignite-admin容器中的是同一个目录。

默认情况下,ignite用来创建容器服务可以使用主机上端口范围为[5001,6000]的未使用端口,管理后台的用户为admin,密码123。你可以通过设置environment来覆盖。

例如,以上模板中,你需要替换AUTH_USERNAME,AUTH_PASSWORD为你的管理后台用户名和密码,并将HOST_ADDRESS修改为你的服务器公网IP或者域名。

使用MySQL存储

默认情况下,ignite使用sqlite作数据存储,也支持配置使用MySQL数据库作为存储后端。

environment:
  - DB_DRIVER=${DB_DRIVER}
  - DB_CONNECT=${DB_CONNECT}

需要注意,需要将上诉环境配置加到ignite和ignite-admin两个服务的定义中,确保它们连接的是同一个数据库。在与docker-compose.yml文件同级的目录中,创建.env文件,设置DB_DRIVERDB_CONNECT变量即可。

如果你并没有现成的MySQL服务,这里提供一种简单的容器化MySQL服务的方式。增加mysql服务定义:

mysql:
    container_name: mysql
    image: mysql:5.7
    volumes:
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/conf:/etc/mysql/conf.d"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ignite

这里将数据目录挂载到与docker-compose.yml文件同级的mysql/data目录下,用自定义的配置文件(修改字符集为UTF-8)覆盖容器内的配置文件。

修改.env文件为:

MYSQL_ROOT_PASSWORD=set-root-password
DB_DRIVER=mysql
DB_CONNECT=root:set-root-password@tcp(mysql:3306)/ignite?parseTime=true

配置项说明

通过设置容器的environment来覆盖默认的配置项,这里列举可以配置的环境变量。

  • ignite
    • DB_DRIVER -- 数据库驱动,sqlite3/mysql,默认sqlite3
    • DB_CONNECT -- 数据库连接字符串,默认./data/ignite.db
    • HOST_ADDRESS -- 展示在用户界面上的SS的连接IP,默认localhost
    • HOST_FROM -- 创建SS容器的起始可用端口范围,默认5001
    • HOST_TO -- 创建SS容器的截止可用端口范围,默认6000
  • ignite-admin
    • DB_DRIVER -- 数据库驱动,sqlite3/mysql,默认sqlite3
    • DB_CONNECT -- 数据库连接字符串,默认../ignite/data/ignite.db
    • AUTH_USERNAME -- 管理用户名,默认admin
    • AUTH_PASSWORD -- 管理密码,默认123
    • AUTH_SECRET -- 生成JWT Token的秘钥,默认123

升级说明

如无特殊说明,标签为latest的镜像是我们提供的兼容旧版本的最新版本镜像,你可以放心升级,步骤也相当简单,你只需要在docker-compose.yml文件的同级目录下执行以下命令即可完成升级。

docker-compose down
docker-compose pull
docker-compose up -d