2017-08-11 19 views
2

daemonized/init.dの動作をさせるために、serviceモードの埋め込みランチャースクリプトでspring-bootを使用しています。spring-boot launch-script:pid_folderのidentity-subdirectoryを避ける方法は?

しかし、sudoを使用する必要があるため、spring-boot jarへのシンボリックリンクは/etc/init.dありません。我々は合格するsudoを避けるため、プロファイル、環境などのJAVA_OPTS-Dspring.profiles.active=$APP_PROFILEsudoを経由して始まったが、/home/appuser/.bashrc(?)で定義されたときに、これは動作しません)

我々はいくつかの間接と、このディレクトリ・レイアウトを持っています。 app.jar startでアプリケーションを起動すると、基本的app.jar => current/app.jar => build-xx/app.jar

[email protected]:~/apps/services$ ls 
app.jar -> /home/appuser/apps/services/current/services-1.0-SNAPSHOT.jar 
current -> /home/appuser/apps/services/services-1298 
services-1298 

起動スクリプトは、プログラムの「同一性」に基づいてPID-フォルダに追加PID-サブディレクトリを生成します。私たちにとって、これは次のようになります。特別な治療とPID-サブディレクトリservices-1.0-SNAPSHOT_homeappuserappsservicesservices-1298を取得シンボリックリンク/etc/init.dで使用した場合とは異なり

/home/appuser/apps/services/run/services-1.0-SNAPSHOT_homeappuserappsservicesservices-1298/services.pid 

を省略している/安定したままになります。

この動的pid-subdirは、デーモンのステータスや起動/停止をデプロイメント中に確認するのが非常に難しくなります。シーケンスを正しく取得しなければならず、誰もプロセスを2回起動することを止めてしまうからです新しいID-subdirを持つ新しいインスタンス)。

だから、誰もこのpid-subdir-identity stuffが存在しなければならない理由を知っていますし、それに対処する最良の方法は何ですか? 設定が間違っていますか?

アドバイスありがとうございます。

答えて

1

APP_NAME環境変数を使用して、IDを制御できます。

サービスの環境変数を、jarファイルの隣に.confファイルを使用して構成することをお勧めします。たとえば、アプリケーションがapp.jarと呼ばれる場合、confファイルの名前はapp.confで、jarと同じディレクトリに配置する必要があります。アプリケーションにAPP_NAMEJAVA_OPTSなどを設定することができます。あなたが望むなら、これはinit.dを使うことができるはずです。

+0

私たちは '.conf'を使用していて、' APP_NAME'で作業しようとしましたが、環境として 'APP_NAME'を設定することは可能ですが、いくつかの異なるアプリケーションunser'/home/appuser/apps/... 'バックエンド、フロントエンド、APIなど - これは、ユーザーごとに1つのアプリケーションでのみ動作しますか? – hotzen

+0

いいえ。私が答えてお勧めするように.confファイルを使用する場合は、参加するユーザーの数に関係なく、アプリケーションごとに環境を設定できます。 –

+0

これは動作しません。APP_NAMEはconfファイルエントリ環境変数を介してのみ可能です。 confファイルがソースになる前にも使用されています – hotzen

関連する問題