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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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
 
# 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 件のコメント:

コメントを投稿