それは些細な誤りであるルックス。それはmain.js
はすなわちDockerfile
の最後の行ごとに/
ディレクトリの下で利用可能であることが期待されている
、
CMD node ./main.js
はしかし、私はmain.js
が/opt/bundle/programs/server/
ディレクトリの下で利用可能である、と信じています。
main
アプリケーションを実行するオプションがあります。画像を変更することなく
1に:
だけdocker run
を変更して、画像を変更せずに
docker run -tid -p 80:80 image/name node /opt/bundle/programs/server/main.js
2を呼び出すことがどのアプリケーション伝える:コンテナにホストからローカルディレクトリをマウント:
同じ第1の場合と同様に。アプリケーションがサイドイメージで利用可能ではなく、ホスト/ローカルマシンで利用可能であると仮定しよう。そのため、ローカルディレクトリをコンテナにマウントし、そのアプリケーションを実行します。この場合、現在のディレクトリにアプリケーションapp2.js
があります。
docker run -p 80:80 -v $(pwd):/share -itd image/name node /share/app2.js
3修正画像、CMD
絶対パス参照:
は、既存の画像を削除します。 Dockerfile
を変更して、今すぐイメージを再構築
CMD node /opt/bundle/programs/server/main.js
に
CMD node ./main.js
から以下のステートメントを変更します。この場合、コンテナを実行している間は、コマンドで実行するアプリケーションを指定する必要はありません。上記とは異なり、オプション#1、#2が表示される場合、コンテナの実行時に呼び出されるアプリケーションも指定されます。代わりに、イメージがデフォルトで実行されるアプリケーションを知っているので、単にイメージを実行できます。ドッカー容器仕上げ/内部で実行中のプロセスを完了したとき
docker run -tid -p 80:80 image/name
Exited
状態が示されています。
main.js
は正しい場所に配置できませんでした。プロセスはすぐに終了し、コンテナはケースから抜け出しました。
希望すると便利です。
出典
2016-11-14 04:12:11
Rao
自分で 'node。/ main.js'を実行すると、フォアグラウンドに留まるのでしょうか、それともバックグラウンドで終了するのでしょうか? – larsks
私のように、コンテナ内のあなたのサービスが出てくるので、コンテナも同様です。あなたはコンテナのログを調べましたか? '' dockerはサーバのプロンプトに ''あなたのコンテナ名 '' '' –
@larsksを記録し、 'node。/ main.js'はコマンドを見つけられません。' docker logs'はエラーを報告しません。これはノードがインストールされていないことを私に伝える... hummm –