dockerコンテナで永続的にノードを起動すると問題が発生します。手動で起動すると、代わりにDockerfileで同じコマンドを起動して、コンテナをビルドして起動すると終了します。コマンドはbashで機能します:
docker run -it container_name bash forever start -c 'node --harmony' /my/path/app.js
Dockerfileにコマンドを入れようとしましたが、コンテナが起動しません
CMD forever start -c 'node --harmony' /my/path/app.js
Forever start script.js
はバックグラウンドで実行されます。フォアグラウンドでforever
を実行するには、forever script.js
を試してください。
これは、Dockerが必要とするフォアグラウンドで永遠に始まります。コンテナは、CMDで定義されたプロセスが稼働している間だけ「生きている」ことを忘れないでください。永久にデーモンとして起動するため、コマンド自体が終了し、dockerも終了します。
CMD forever -c 'node --harmony' /my/path/app.js
Dockerでforever
を使用しようとしています。これは機能します:
CMD ["forever", "src/app.js"]
配列構文を使用してみてください。
CMD ["forever", "start", "-c", "node --harmony", "/my/path/app.js"]
Dockerfileを入れてください:
CMD forever app.js