sql >> データベース >  >> RDS >> PostgreSQL

初期データを含むdockerpostgresは、コミットを超えて永続化されません

    問題は、postgresDockerfileが「/var / lib / postgresql/data」をボリュームとして宣言していることです。これは、イメージで使用されるユニオンファイルシステムの外部にある通常のディレクトリです。ボリュームは、コンテナがそれらにリンクしなくなり、明示的に削除されるまで存続します。

    いくつかの選択肢があります:

    • --volumes-fromを使用します 新しいコンテナとデータを共有するコマンド。これは、一度に1つの実行中のpostgresイメージしかない場合にのみ機能しますが、これが最善の解決策です。
    • ボリュームを宣言する前にデータを作成する独自のDockerfileを作成します。このデータは、コンテナの作成時にボリュームにコピーされます。
    • 実行時にデータベースにデータを入力するエントリポイントまたはcmdスクリプトを記述します。

    これらの提案はすべて、コンテナーの実行後にボリュームを使用してデータを管理する必要があります。または、独自のDockerfileを作成し、ボリュームを宣言しないこともできます。次に、docker commitを使用できます データを追加した後に新しい画像を作成します。これはおそらく短期的には機能しますが、コンテナーを操作する方法ではありません。繰り返し可能ではなく、最終的にはユニオンファイルシステムのレイヤーが不足します。

    詳細については、コンテナ内のデータの管理に関する公式のDockerドキュメントをご覧ください。



    1. PDOで準備された挿入後に最後の挿入IDを取得します

    2. MySQLWorkbenchの上位の代替案

    3. ディレクトリに保存する前にアップロードしたファイルの名前を変更するにはどうすればよいですか?

    4. OracleRACVIPおよびARPPrimer