2016-09-20 14 views
1

node app.jsコマンドが呼び出される前にいくつかの証明書を作成するシェルスクリプトを実行しなければなりません。どうすればシェルスクリプトを実行した後に終了せず、node app.jsウェブアプリケーションを実行し続けることができます。シェルスクリプトを実行してから、ドッカーのコンテナ内にノードapp.jsを実行することが可能です

+0

を使用しているDockerfileを記載してください。 – BMitch

答えて

1

私が過去に行ったことは、Dockerfileで定義されたエントリポイントをシェルスクリプトにしてから、そのスクリプト内からnodeコマンドを実行することです。

だから私のDockerfileに私はこれを持っている -

ENTRYPOINT ["./docker-start.sh"] 

そして、私のdocker-start.shスクリプトは、この含まれています

#! /bin/bash 

# Initialization logic can go here 

echo "Starting node..." 
node start.js $* # The $* allows me to pass command line arguments that were passed to the docker run command. 

# Cleanup logic can go here 
+0

はそれが可能です。 – Oleg

0

証明書をイメージに保存するので、イメージから実行するすべてのコンテナで証明書が同じになりますか?

あなた docker buildあなたの本命が永続的に保存され、あなたが作成する必要はありませんので、 RUN命令の出力は、画像に保存されます
COPY create-certs.sh /create-certs.sh 
RUN /create-certs.sh 
CMD ["node", "etc."] 

:そうなら、あなたはちょうどDockerfileであることを行うことができますコンテナの開始時に

各コンテナの要求に応じて証明書を作成する必要がある場合は、複数の手順を実行するブートストラップシェルスクリプトを使用できます - 証明書が存在するかどうかを確認し、必要に応じて作成してノードアプリケーションを起動します。ブートストラップシェルスクリプトは、CMD用です。

+0

そのトリック、証明書は、コンテナの各実行ごとに異なります。 – Oleg

+0

問題ではありません。その起動ロジックを 'bootstrap.sh'にラップし、スクリプトの最後のコマンドがNodeアプリケーションを起動すると、スクリプトプロセスは生き続けるでしょう。それがDockerが監視するものです。 –

+1

これは基本的に@Lixが提案したものですか? – Oleg

関連する問題