mirror of
https://github.com/syuilo/ai.git
synced 2024-12-30 11:21:08 +00:00
Dockerで動かせるようにする (#84)
* memory.jsonの保存先をdata以下にする * Dockerで動くようにする * 余計な空行を削除 * 余分なファイルをコンテナに追加しないようにする * memory.jsonの保存先を変えられるようにする * DockerでMeCabのインストールの有無を切り替えられるようにする
This commit is contained in:
parent
a1c5dc8d56
commit
0837b63a60
13
.dockerignore
Normal file
13
.dockerignore
Normal file
|
@ -0,0 +1,13 @@
|
|||
config.json
|
||||
font.ttf
|
||||
ai.*
|
||||
*.md
|
||||
*.png
|
||||
Dockerfile
|
||||
docker-compose.yml
|
||||
LICENSE
|
||||
|
||||
node_modules/
|
||||
test/
|
||||
data/
|
||||
.vscode/
|
25
Dockerfile
Normal file
25
Dockerfile
Normal file
|
@ -0,0 +1,25 @@
|
|||
FROM node:lts-bullseye
|
||||
|
||||
RUN apt-get update && apt-get install -y tini
|
||||
|
||||
ARG enable_mecab=1
|
||||
|
||||
RUN if [ $enable_mecab -ne 0 ]; then apt-get update \
|
||||
&& apt-get install mecab libmecab-dev mecab-ipadic-utf8 make curl xz-utils file sudo --no-install-recommends -y \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt-get/lists/* \
|
||||
&& cd /opt \
|
||||
&& git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git \
|
||||
&& cd /opt/mecab-ipadic-neologd \
|
||||
&& ./bin/install-mecab-ipadic-neologd -n -y \
|
||||
&& rm -rf /opt/mecab-ipadic-neologd \
|
||||
&& echo "dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/" > /etc/mecabrc \
|
||||
&& apt-get purge git make curl xz-utils file -y; fi
|
||||
|
||||
COPY . /ai
|
||||
|
||||
WORKDIR /ai
|
||||
RUN npm install && npm run build
|
||||
|
||||
ENTRYPOINT ["/usr/bin/tini", "--"]
|
||||
CMD npm start
|
25
README.md
25
README.md
|
@ -20,11 +20,34 @@ Misskey用の日本語Botです。
|
|||
"reversiEnabled": "藍とリバーシで対局できる機能を有効にする場合は true を入れる (無効にする場合は false)",
|
||||
"serverMonitoring": "サーバー監視の機能を有効にする場合は true を入れる (無効にする場合は false)",
|
||||
"mecab": "MeCab のインストールパス (ソースからインストールした場合、大体は /usr/local/bin/mecab)",
|
||||
"mecabDic": "MeCab の辞書ファイルパス (オプション)"
|
||||
"mecabDic": "MeCab の辞書ファイルパス (オプション)",
|
||||
"memoryPath": "memory.jsonの保存先(オプション、デフォルトは'.'(レポジトリのルートです))"
|
||||
}
|
||||
```
|
||||
`npm install` して `npm run build` して `npm start` すれば起動できます
|
||||
|
||||
## Dockerで動かす
|
||||
まず適当なディレクトリに `git clone` します。
|
||||
次にそのディレクトリに `config.json` を作成します。中身は次のようにします:
|
||||
(MeCabの設定、memoryPathについては触らないでください)
|
||||
``` json
|
||||
{
|
||||
"host": "https:// + あなたのインスタンスのURL (末尾の / は除く)",
|
||||
"i": "藍として動かしたいアカウントのアクセストークン",
|
||||
"master": "管理者のユーザー名(オプション)",
|
||||
"notingEnabled": "ランダムにノートを投稿する機能を無効にする場合は false を入れる",
|
||||
"keywordEnabled": "キーワードを覚える機能 (MeCab が必要) を有効にする場合は true を入れる (無効にする場合は false)",
|
||||
"chartEnabled": "チャート機能を無効化する場合は false を入れてください",
|
||||
"reversiEnabled": "藍とリバーシで対局できる機能を有効にする場合は true を入れる (無効にする場合は false)",
|
||||
"serverMonitoring": "サーバー監視の機能を有効にする場合は true を入れる (無効にする場合は false)",
|
||||
"mecab": "/usr/bin/mecab",
|
||||
"mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
|
||||
"memoryPath": "data"
|
||||
}
|
||||
```
|
||||
`docker-compose build` して `docker-compose up` すれば起動できます。
|
||||
`docker-compose.yml` の `enable_mecab` を `0` にすると、MeCabをインストールしないようにもできます。(メモリが少ない環境など)
|
||||
|
||||
## フォント
|
||||
一部の機能にはフォントが必要です。藍にはフォントは同梱されていないので、ご自身でフォントをインストールディレクトリに`font.ttf`という名前で設置してください。
|
||||
|
||||
|
|
12
docker-compose.yml
Normal file
12
docker-compose.yml
Normal file
|
@ -0,0 +1,12 @@
|
|||
version: '3'
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
- enable_mecab=1
|
||||
volumes:
|
||||
- './config.json:/ai/config.json:ro'
|
||||
- './font.ttf:/ai/font.ttf:ro'
|
||||
- './data:/ai/data'
|
||||
restart: always
|
|
@ -81,7 +81,12 @@ export default class 藍 {
|
|||
this.account = account;
|
||||
this.modules = modules;
|
||||
|
||||
const file = process.env.NODE_ENV === 'test' ? 'test.memory.json' : 'memory.json';
|
||||
let memoryPath = './';
|
||||
if (config.memoryPath)
|
||||
{
|
||||
memoryPath = config.memoryPath;
|
||||
}
|
||||
const file = process.env.NODE_ENV === 'test' ? `${memoryPath}/test.memory.json` : `${memoryPath}/memory.json`;
|
||||
|
||||
this.log(`Lodaing the memory from ${file}...`);
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ type Config = {
|
|||
serverMonitoring: boolean;
|
||||
mecab?: string;
|
||||
mecabDic?: string;
|
||||
memoryPath?: string;
|
||||
};
|
||||
|
||||
const config = require('../config.json');
|
||||
|
|
Loading…
Reference in a new issue