LoginSignup
1
2

More than 5 years have passed since last update.

メモ:dockerコンテナ内のjarをクラス指定で起動する

Posted at

関わっているプロジェクトでdockerを使っているのですが、プロダクト内(scala)に単独実行可能なバッチスクリプトを入れ込んだ際、dockerのコマンド経由でそのバッチだけを起動する方法がわからなくてハマったのでメモ。
バッチのjar起動時にはいつもclasspathの指定で起動していたが、dockerで生成された起動スクリプト(bin/hoge-app)の-mainオプションを指定すれば同じことができるっぽい。
dockerのイメージはsbtのsbt-native-packagerで生成してます。

試しにローカルで実行

# sbtからdocker imageをビルド
$ sbt docker:stage
$ sbt docker:publishLocal
# プロジェクト内に生成されたdocker imageへ移動
$ cd target/docker/stage/opt/docker
$ bin/hoge-app -main hoge.batch.FugaBatchLauncher # クラスパスを指定

サーバ環境側で実行

# サーバ環境ではGCPのCONTAINER REGISTRYでコンテナを管理しているのでプルしてくる
$ gcloud docker -- pull gcr.io/hoge-app:1.0
# 起動。mysqlと接続のためにlinkを指定。/bin/bashにて起動オプションなどを指定。
$ docker run --rm -p 9000:9000 --link mysqld:mysql-container gcr.io/hoge-app:1.0 /bin/bash -c "bin/hoge-app -Dconfig.resource=application.conf -Dlogback.configurationFile=logback.xml -main hoge.batch.FugaBatchLauncher"

あとは上記、起動スクリプトをcronに指定すればバッチ起動できそう

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2