見覚えのあるタイトル!と思った方はヴァル研Qiitaマニア🤔
後輩が書いた記事をそっくりパクって参考にdocker使ってどこの環境でも動くものにしてしまおう。
細かい説明は、そちらの記事にあるので、そちらを見ていただいて...()
https://qiita.com/kumatira/items/658e7b75785c854f0f69
今回作成したDockerfileがこちら
多少、上の記事の手順を入れ替えてますが、同じ内容です。
https://github.com/soe-j/open-trip-planner/blob/master/Dockerfile
FROM ubuntu:latest
RUN apt-get -y update
RUN apt-get install -y openjdk-8-jre
RUN apt-get install -y wget
RUN cd /root && \
mkdir otp && \
cd otp && \
wget "https://repo1.maven.org/maven2/org/opentripplanner/otp/1.3.0/otp-1.3.0-shaded.jar" && \
wget "http://www3.unobus.co.jp/opendata/GTFS-2018-04-15.zip" -O unobus.gtfs.zip && \
wget "http://www.shimoden.net/busmada/opendata/GTFS_JP.zip" -O shimodenbus.gtfs.zip && \
wget "http://loc.bus-vision.jp/gtfs/ryobi/gtfsFeed" -O ryobibus.gtfs.zip && \
wget "http://loc.bus-vision.jp/gtfs/okaden/gtfsFeed" -O okadenbus.gtfs.zip && \
wget "http://loc.bus-vision.jp/gtfs/chutetsu/gtfsFeed" -O chutetsubus.gtfs.zip
RUN cd /root && \
apt install -y osmctools && \
wget "http://download.geofabrik.de/asia/japan/chugoku-latest.osm.pbf" && \
osmconvert chugoku-latest.osm.pbf -b=133.455201,34.274923,134.298740,35.284564 --complete-ways -o=okayama.pbf && \
mv okayama.pbf otp/
ENTRYPOINT java -Xmx5G -jar /root/otp/otp-1.3.0-shaded.jar --build /root/otp/ --inMemory
このDockerfileのあるディレクトリで、以下のコマンドを実行。
Image名のkumanoは特に意味はありません。uniqになれば何でもいいです。
$ docker build -t kumano/otp:0.1 ./
$ docker run --name otp -p 8080:8080 kumano/otp:0.1
docker-composeも使えるあなたはこちら
Dockerfileが同じディレクトリにある想定です。
https://github.com/soe-j/open-trip-planner/blob/master/docker-compose.yml
version: "2"
services:
otp:
build:
context: ./
image: kumano/otp:0.1
ports:
- 8080:8080
dockerコマンドを叩く代わりに、このコマンドを実行。
docker-compose.ymlのあるディレクトリでお願いします。
$ docker-compose up
さて、動作確認
buildもrun(up)もめちゃめちゃ時間がかかるので、お茶でも淹れていましょう🍵
dockerコンテナが立ち上がった後も、じわりじわりとログが流れていてOTPが起動できてないことがわかります。
otp_1 | 10:36:50.176 INFO (NetworkListener.java:750) Started listener bound to [0.0.0.0:8080]
otp_1 | 10:36:50.181 INFO (NetworkListener.java:750) Started listener bound to [0.0.0.0:8081]
otp_1 | 10:36:50.184 INFO (HttpServer.java:300) [HttpServer] Started.
otp_1 | 10:36:50.184 INFO (GrizzlyServer.java:153) Grizzly server running.
上のようにポート8080が開通したら合図です。
以下のパスを叩いてみて喜びましょう👐
利用できる交通手段
http://localhost:8080/otp/routers/default/
Feedid一覧
http://localhost:8080/otp/routers/default/index/feeds
上で取れたFeedIDの一つを使ってFeedの提供事業者を見てみる
http://localhost:8080/otp/routers/default/index/agencies/1
上の情報から取れる事業者IDを使って、その事業者の全系統表示
http://localhost:8080/otp/routers/default/index/agencies/1/1260001000674/routes
経路探索
http://localhost:8080/otp/routers/default/plan?fromPlace=34.656513,133.975075&toPlace=34.665495,133.918570&time=1:02pm&date=11-14-2018&mode=TRANSIT,WALK&maxWalkDistance=500&arriveBy=false&numItineraries=5
http://localhost:8080/otp/routers/default/plan?fromPlace=34.779151,134.038106&toPlace=34.665495,133.918570&time=1:02pm&date=11-14-2018&mode=TRANSIT,WALK&maxWalkDistance=500&arriveBy=false&numItineraries=5
まとめ
Dockerを使ってこんなに手順を減らせました
$ git clone git@github.com:soe-j/open-trip-planner.git
$ cd open-trip-planner
$ docker-compose up
Docker最高。
@kumatira ご教示ありがとうございました!