1.08.2014

Running shogi-server in a Docker Container

shogi-server を Docker コンテナで動かす

 

コンピュータ将棋協会規定のTCP/IPプロトコルに従った将棋のネット対局サーバ shogi-server
Docker コンテナ上で動かしてみたのでメモ。

事前準備

  • Docker ホスト環境の構築
  • 適当なプロトコル対応クライアントソフトの入手
    • こちら から適当なものをインストール。
      Mac 環境であれば SFICP (Shogi Framework Implements CSA Protocol) がおすすめ。
    • telnet コマンドでも一通りの動作確認は可能。

 

遊び方

手順は全て Docker リポジトリに書いておいた。

基本的には、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。

 

 

 

Related Posts

0 件のコメント:

コメントを投稿