2017-11-09 4 views
0

私はドッカーには新しく、すでにredmineドッキングを行っています(主にjs、css、htmlで少しカスタマイズしています)。 私はそれが今見ていることにはとても満足していますが、私がそれを始めたときの知識が不足しているため、私はメールサーバなどの今追加したい項目を逃しました。メインは現在オンです。ここ は私の質問です:現在実行中のredmineドッカーを保存して再利用するように変更しました

私が最初にイメージを走った:

docker run -p 80:80 --name=redmine --rm --link=mysql-redmine:mysql/
    --volume=/srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:3.4.2 

そして、私はそれ以来行っているすべてのHTMLの変更を確認しdocker restartですが、それと同じように、それを再実行して - 私は自信を持っていませんそれらの変更を保存しないでください、そうですか?

実行するたびにenv変数が必要なのですか、イメージを保存して同じポートとMySQL DBでイメージを実行する方法がありますか?私は実行中のドッカーファイルを見て、database.ymlは最初の実行時に渡された正しい設​​定を持っていますが、それらが保存されているかどうかは分かりません。

最後の1つ:私はこのイメージをカスタムのものに変更して変更を保存することができますが、やはりそれらのうちどれが保存されていないかを実際にはわかりません。 ¿実行時のenvsはコミット時に保存されますか?

あなたが助けてくれることを願っていますが、ドキュメントは実際にはそれほど大きくなくてはいけません。回避策は多くの場合、非常に具体的なケースに基づいています。

また、私はDockerファイルについて知っていますが、それとrunコマンドについては同じ疑問があります。

ありがとうございました!

答えて

1

あなたのようなコンテナへの変更:あなたはを停止コンテナを起動するたびに意味永続的ではないでしょうVI/nanoや他のパッケージを追加し、電子メールサーバのように新しいパッケージを追加することをお使いの変更するとが失われ、が失われ、再実行する必要があります。

あなたがDockerfileを作成する必要があり、そこにはあなたのようなからの指示を指定することができ、それらを永続化するには:

FROM "sameersbn/redmine:3.4.2" 

このDockerfile内で、次のようなあなたの追加パッケージを指定する必要があります:ヨーヨー次に必要なパッケージ(複数可)

をインストールします

RUN apt-get update && apt-get install xyz 

インストールしたいパッケージを使用して新しいイメージを作成します

docker build -t my_new_image:1.0.0 . 

を、あなたはそれらを失うことはない:uがイメージを作成する必要があります。あなたはVOLUMES

最後を使用して、現在行っているとしても

、毎回必ずENV変数を渡す必要がありますし、またはコマンドを追加したり、COPYを使用してHTMLファイルを追加することができます良い解決策は、コンテナを実行するためのすべてを含むdocker-compose fileを使用することです。

これが役に立ちます。

+0

便利な情報、ありがとう、私はドッカー作曲者ファイルの部分を使用します。私はすでに、docker cpコマンドを使ってそれらのファイルをボリュームに追加しています。あなたはCOPYまたはADDで何を言っているのでしょうか? –

+0

@RodrigoGross --volumeを渡すと、ローカルファイルがコンテナにマウントされ、そのボリューム内のコンテナ内に書き込む内容は、コンテナの停止と削除を行っても保持されます。あなたのDockerファイルでは、* COPY *はローカルファイルをコンテナにコピーしますが、コンテナのライフタイム中にコンテナがファイルを書き込んだ場合、コンテナを停止してコンテナを削除すると、それらのファイルは失われます – Sergiu

+0

Aaaaand聞く!ありがとう!それが私の疑問のほとんどを解決します。私はいくつかのオプションでそれを試します私のユーザーの誰もが目を覚まして何が起こるかを確認するときはそれが非常にうまくいった –

0

HTMLファイルと環境変数の変更を保存する場合は、Dockerfileを使用して新しいイメージを作成することをお勧めします。

FROM sameersbn/redmine:3.4.2 
COPY modified.html /path/to/original.html 
ENV SOME_VARIABLE=value 

そして、画像docker build -t local/redmine:3.4.2 .を構築し、それdocker run ... local/redmine:3.4.2を実行します。

もう1つの解決策は、元のイメージを実行し、ボリュームを使用してhtmlファイルを上書きすることです:docker run ... -v /path/to/modified.html:/path/to/original.html sameersbn/redmine:3.4.2

編集後のHTMLコンテンツをイメージに配布する必要がないかぎり、後者のほうが優れています。冗長なコマンドを書くのが面倒であれば、簡単なスクリプトに入れたり、docker-compose.ymlファイルを書いてdocker-compose upを実行することができます。

+0

おそらく、私はすでに "docker cp"を使ってそれらのファイルをボリュームに送信しているはずですので、すでに送信したファイルを永続化する方法は、イメージを使用しますか?保存された画像にこれらの変更が含まれますか?質問してくれてありがとう! –

関連する問題