これはなに?
この記事通りに最後までやれればたぶん KH Coder を Docker で動かすことが出来ます。でも手作業がかなり入るので大変かも。
github から clone
今回の成果を github においてあります。
docker-compose.yml の内容とかを確認しておきましょう。
あとで mysql のポートはふさいだ方がいいかも。
KH Coder のインストール
KH Coder をインストールします。パッチも当てます。自分がパッチを作った経緯は忘れてしまいました(今検証するとそもそもパッチいらなさそう)。パッチの内容は DB 名として mysql からkhcoder に変えました。mysql 8.0.27 ではセキュリティ的に厳しくなったのが理由のはずです。固定的に DB の名称を khcoder にしました。
なお、この変更の為 mysql で初期化が必要になりました。createdatabase とか create user とか grant とかね。特に grant はセキュリティに関わるので注意が必要です。
$ git submodule init
$ git submodule update
$ cd KHCoder/khcoder
$ patch -p1 << ../../khcoder.diff
[注意] あとで検証したらパッチいらないみたい。再確認したら消しちゃうよ。
docker-compose で起動
X-Windows が動いている環境で docker-compose で up します。
すると xeyes が動くはずです。この時点ではセキュリティの甘くなった mysql と xeyes が立ち上がっているだけです。
こんな感じで最近の mysql のセキュリティ強化を無視する設定になっているので注意してください。(他の DB と共存させない。ほかの人に触らせない)
[client]
loose-local-infile=1
[mysqld]
default_authentication_plugin=mysql_native_password
mysql の設定
docker 内に入って mysql の設定をします。ここでもセキュリティを甘くしていることに注意。特に khcoder というユーザに全権を与えています。そして kh_coder を一旦立ち上げます。
$ docker cp mysql.txt nl2e_nl2e_1:/
$ docker inspect nl2e_mysql_1
$ docker exec -it nl2e_nl2e_1 /bin/bash
# mysql --host 172.XX.0.2 -u root -p < mysql.txt
# cd /KHCoder/khcoder/
# /usr/bin/perl ./kh_coder.pl
coder.ini の設定
一旦 KH Coder を立ち上げると KHCoder/khcoder/config/coder.ini が作成されます。それを少し編集する。特に IP アドレス。 docker の inspect でみた IP アドレスを使うのがポイントです。
sql_host 172.30.0.2
ここで再度 kh_coder.pl を Docker 内で実行
# cd /KHCoder/khcoder/
# /usr/bin/perl ./kh_coder.pl
おめでとう。たぶん KH Coder が立ち上がっているはず。
チュートリアルを試す。
実行時にどういうわけか Chasen になっているので Mecab にするのでそこだけ注意。日本語の入力がコピペでしかできなかったのはなぜ?
% mkdir KHCoder/works
% cd KHCoder/works
% wget https://khcoder.net/tutorial_data_3x.zip
% unzip -x tutorial_data_3x.zip
MeCab の設定を間違えていた。
MeCab の設定を間違えて、品詞推定させると K が複数になってしまう。以下間違えた結果。