概要
Botpress
とはオープンソースのチャットボット構築プラットフォームです。
ボットの会話フローを視覚的に簡単に構築できるほか、内部でコールするAPIを変えるなどすることで、様々なLLM
に対応することもできます。
さらに、フロントエンド側にボットのURLを埋め込むことで、簡単にチャットスペースを用意することができます。
本記事では、Docker
を使用してBotpress
サーバーを立ち上げ、さらにコード管理できるようにサーバーの中身をバインドしてローカルに落とし込むところまでを紹介します。
なお、私の備忘録的な意味合いもありますので、よりよい方法やご指摘等ございましたら、ぜひご教示ください!
Dockerに慣れている方にはあたりまえの内容かと思います...。
前提
Docker
がインストールされている。
Dockerfile作成
任意のディレクトリにDockerfileを作成します。
FROM botpress/server:v12_31_3
ARG WORKDIR=/botpress/data/
WORKDIR ${WORKDIR}
USER root
COPY ../ ${WORKDIR}
RUN chmod -R 777 ${WORKDIR} # 適宜権限を調整
RUN apt-get -y update && apt-get -y upgrade && apt-get install -y git
CMD ["../bp", "serve"]
botpress
サーバーのバージョンはこちらから選択します。
ビルド -> 起動
docker build -t botpress/server-image-001 . --no-cache=true
docker run -d -p 8000:3000 botpress/server-image-001
この状態で localhost:8000 にアクセスすると、Botpressのログイン画面が表示されます。
コンテナ内のデータをホストにコピー
先ほど作成したDockerfile
があるディレクトリに、Dockerコンテナ内のファイルをコピーします。
まずは起動しているコンテナのIDを取得します。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37d3bd303d83 botpress/server-image-001 "../bp serve" 2 minutes ago Up 2 minutes 0.0.0.0:8000->3000/tcp XXXXXXXXX
CONTAINER ID
列の値を使用して、以下のコマンドを実行します。
docker cp 37d3bd303d83:./botpress/data/ <Dockerfileが存在するディレクトリ>
起動したコンテナサーバー内の botpress/data/
をローカルにコピーしています。
コピーが終了した後のローカルはこのようになります。
この中にも Dockerfile
が存在しますが、先ほど作成した自前のを使用したいので、上の画像のように、Dockerfile
以外を1つ上の階層に全て移動します。
その後、data/
フォルダは削除します。
この状態で、再度ビルド ⇒ 起動します。
※botpress/server-image-001
は停止してから行ってください。
docker build -t botpress/server-image-002 . --no-cache=true
docker run -d -p 8000:3000 botpress/server-image-002
起動できましたら localhost:8000 にアクセスします。
初回アクセス時には、adminユーザーの登録を求められます。
適当な認証情報を入力して Create Account
を押下します。
試しにボットを作成してみます。
画面右側の「Create Bot」をクリックして、作成します。
この段階で、一度コンテナを停止し、もう一度起動します。
その状態で、再度localhost:8000にアクセスしてみましょう。
再度adminユーザーの登録を求められます。
すなわち、先ほどの登録情報が反映されていません。
なぜなら、先ほどの作業はコンテナ内で完結しており、停止した時点でその内容も失われてしまいます。
なので、コンテナ起動時にローカルをバインドしてあげる必要があります。
再度コンテナを停止し、以下のコマンドで起動します。
docker run -v <ローカルのルートディレクトリ>:/botpress/data -d -p 8000:3000 botpress/server-image-002
この時点で、ローカルに data/bots/test-bot-001
というフォルダが作成されているかと思います。
これで無事に、Docker環境からローカルのフォルダをマウントできているのが分かります。
すなわち、Botpressサーバー上の変更をローカルにも反映することができ、内容をコード管理することで複数人で開発を行うことができます。
また認証情報などは storage/core.sqlite
に保存されています。
Botpressはデフォルトで sqlite
を使用しておりますが、環境変数を使用して PostgreSQL
に接続することも可能です。
公式docはこちら。
まとめ
本記事では、Docker
を起動する際にローカルをバインドし、ボットの情報などをコード管理できるようにする流れをご紹介させていただきました。
Docker
およびBotpress
初学者の助けになれば幸いです。
ご案内
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area