2017-06-30 20 views
0

ドッカーコンテナで動作するプログラムを設定する必要があります。これを実現するには、管理プログラムが実行中のプロセスに接続できるように、プログラムを実行している必要があります(また、オープンポートを提供する)。残念ながら、これは唯一の方法なので、単純な編集可能な設定ファイルはありません。 RUNコマンドは、ドッカーが次のコマンドに行った後に実行中のインスタンスを提供しないため、明らかに正しいコマンドではありません。最良の方法は、ドッカー画像を構築する際にこれを行うことですが、コンテナの開始時に行う必要がある場合は、それもOKです。しかし、(私が知る限り)起動時に複数のコマンドを実行する簡単な方法はありません。誰もそれをする方法を持っていますか?正しい状態があまりにも、解決策になる可能性を含む完全プログラムディレクトリをダウンロードDocker:別のコマンドが実行されている間にコマンドを実行

# this command should start the application which has to be configured 
RUN /usr/local/server/server.sh 
# I tried this command alternatively because the shell script is blocking 
RUN nohup /usr/local/server/server.sh & 

# this is the command which starts an administration program which connects to the running instance started above 
RUN /usr/local/administration/adm [some configuration parameters...] 

# afterwards the server process can be stopped 

:ここでは、それはもう少し明確にする

は私のDockerfileからの簡単な例です。しかし、Dockerfileで簡単に設定を変更することはできません。

答えて

0

Dockerfileは、画像を生成するための一連の命令のリストであると考えられています。イメージには、アプリケーションのコードとインストール可能なすべての依存関係が含まれている必要があります。

各RUN命令は、独自のコンテナとして実行されます。実行したコマンドが完了すると、変更されたファイルは新しいイメージレイヤーとしてコミットされます。

バックグラウンドでプロセスを実行しようとすると、実行中のコマンドが直ちに戻るようになります。これが起こると、コンテナは停止したとみなされ、Dockerfileの次の命令は新しい別のコンテナで実行されます。

実際に2つのプロセスを実行する必要がある場合は、単一のRUN命令に渡すことができるコマンドを生成する必要があります。

+1

ありがとう、私は今シェルスクリプトを書いて、1つのコマンドだけで実行します。これはうまくいくようです – UoS

関連する問題