shogi-server を Docker コンテナで動かす
コンピュータ将棋協会規定のTCP/IPプロトコルに従った将棋のネット対局サーバ shogi-server を
Docker コンテナ上で動かしてみたのでメモ。
事前準備
- Docker ホスト環境の構築
- ローカルマシン上に Vagrant + VirtualBox + CentOS 6.5 で構築したい場合はこちらを参照。
mog project: Vagrant: Creating CentOS 6.5 Docker Host - 適当なプロトコル対応クライアントソフトの入手
- こちら から適当なものをインストール。
Mac 環境であれば SFICP (Shogi Framework Implements CSA Protocol) がおすすめ。 - telnet コマンドでも一通りの動作確認は可能。
遊び方
手順は全て Docker リポジトリに書いておいた。
- mogproject/shogi-server Repository | Docker Index
(GitHub 上に Dockerfile を置いて連携したら trusted build になった)
基本的には、Docker ホスト上で以下のコマンドを叩けばコンテナが起動する。
$ docker pull mogproject/shogi-server $ docker run -d -p 4081:4081 mogproject/shogi-server
forwarding するポートを指定して (-p 4081:4081)、 Docker ホストの 4081 番ポートがそのまま
Docker コンテナの 4081 番ポートに繋がるようにしているが、ここはお好みで。
その後は将棋ソフト(クライアント)から Docker ホストに接続するか、telnet で 4081 番ポートに接続すれば
shogi-server が応答を返すはずだ。
Dockerfile
# Dockerfile for shogi-server # # # use the centos image provided by dotCloud FROM centos:6.4 # install packages RUN yum install -y ruby RUN yum install -y git # download shogi-server module RUN git clone git://git.sourceforge.jp/gitroot/shogi-server/shogi-server.git /opt/shogi-server # create shogi user and change owner of the directory. RUN useradd shogi RUN chown -R shogi /opt/shogi-server # launch shogi-server when launching the container ENTRYPOINT ["ruby", "/opt/shogi-server/shogi-server", "event1", "4081"] # run shogi-server as shogi user USER shogi # expose shogi-server port EXPOSE 4081
ruby のバージョン指定もしていないし、shogi-server のログ出力も十分でない、超手抜き実装。
ベースは dotCloud 公式の CentOS 6.4 イメージ。
モジュールは /opt/shogi-server 配下に置かれ、shogi という OS ユーザで、event1 というイベント名でプロセスが立ち上がる。
自分でビルドを行う場合は Dockerfile のあるディレクトリに移動し、
$ docker build -t ユーザ名/イメージ名 . $ docker run -d -p 4081:4081 ユーザ名/イメージ名
と実行すればよい。
起動中の shogi-server の出力を見たい場合は、Docker ホストサーバ上で
$ docker ps
を叩いてコンテナID (CONTAINER ID/CID) を確認し、
$ docker logs コンテナID
で OK。
0 件のコメント:
コメントを投稿