2016-11-23 1 views
1

私はドッカーとコンテナに全く新しいです。私はまた、VMの概念全体を初めて知っています。Docker Container内のコードを変更するにはどうすればよいですか?

私は、VMとドッカーは、アプリケーションのすべての依存関係を、それらをサポートするクラウドに簡単にデプロイできる単一コンポーネントとして利用できるようにする方法であることを理解しています。

ローカルマシン(Ubuntu)にDockerをインストールしました。ノード公式イメージをダウンロードして実行するためにused this guideを使用しました。

私が今知る必要があるのは、Docker内のファイルのコードを変更する方法です。私はアプリ内の 'server.js'を変更しました。http://locahost:49160に移動すると、ブラウザには古いserver.jsの出力が表示されます。私はコンテナを再起動しましたが、私は同じ古い出力を取得します。

変更をコミットして新しいイメージを作成することができます。しかし、古いイメージは完全に役に立たないのではないでしょうか?

またはありません。 Dockerでの作業の仕組みを理解していますか?

+0

私はドッカーを使用していませんが、コンテナに変更を加えてもそれはそのままです。 –

+0

ああ、nodejsサーバーをもう一度起動すると問題はありますか?私はそれを試みたので失敗しました。 –

答えて

3

コンテナ内で変更を加えたり、元の画像に変更をコミットしたり、新しい画像を作成することもできます。

新しい画像やタグを作成することをおすすめします。

guideを確認してください。 server.jsを変更したいときは、それをやってみましょうが、新しい画像も作成してください。タグ(test1)を追加することを忘れないでください。

例、docker build -t <your username>/node-web-app:test1 .

次に、あなたのケースでdocker run -p 49160:8080 -d <your username>/node-web-app:test1

+0

さて、これをテストしてお知らせします。 –

+0

新しい画像を作成する。画像の作成頻度は? –

+1

コード内で編集を行い、展開するたびに実行します。 – lvthillo

2

で新しいイメージを実行することができます。あなたはおそらく、あなたのイメージを再構築する必要があります:あなたはあなたのイメージ/コンテナ内にコピーされ、あなたのserver.jsに編集をした

docker build -t my-new-image . 

。確かに古いイメージは役に立たないでしょう。ビルド後にdocker runで新しいコンテナを開始する必要があります。

いくつかのケースでは、あなたはそれが自動的にあなたのコンテナ内で更新されますローカルマシン上のコードに編集を加えた場合docker run -v my-local-volume:/volume-in container ...

であなたのドッキングウィンドウのコンテナにあなたのコード/データをマウントすることが可能です。イメージを更新したり、コンテナを再起動する必要はありません。しかし、あなたの場合、ドッカーファイルのCOPYコマンドでアプリケーション内のコードをコピーしてください。

+0

いつでも手動でコードをコピーしないでコードをコピーする方法はありますか? –

+0

nodejsがうまくいきません。しかし、私は '問題'は、npmのインストールがイメージ(おそらくあなたのpackage.json - > server.jsに依存している)の内部で行われているという事実だと思います。ですから、解決策があれば、画像の中でこれを行うのではなく、コンテナの起動時にnpm install + npmの起動を実行するstartup.shスクリプトを作成することです。 – lvthillo

+0

大丈夫です。私はテストしてお知らせします。 –

関連する問題