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

docker-composeのコンテナエントリポイントの後にスクリプトを実行します

    元のcommandをオーバーライドしています このスクリプトではpostgresを開始しないため、データベースを利用できません。

    データベースの初期化をコンテナのエントリポイントディレクトリに配置できます:/docker-entrypoint-initdb.d 。これにより、すべての*.shが実行されます。 および*.sql このディレクトリ内のファイルであり、元のcommandには触れません。 。
    このディレクトリ内のすべてのファイルは、コンテナの作成時にアルファベット順に自動的に実行されます。 。したがって、スクリプト/ SQLファイルをエントリポイントに追加するボリュームを作成し、コンテナにそれらを実行させます。これは、公式のpostgresドキュメントのセクション「このイメージを拡張する方法」 で説明されています。 。

    作成ファイルは次のように変更されます:

    postgres:
      build: ./postgres
      volumes:
        - /shared_folder/postgresql:/var/lib/postgresql
        - ./db-init-scripts:/docker-entrypoint-initdb.d
      ports:
        - "5432:5432"
    

    一方、ローカルディレクトリ、例えばdb-init-scripts 、初期化スクリプトが含まれています(必要に応じて名前を変更してください)。 create_db.shをコピーします このフォルダに移動すると、新しいコンテナを作成すると自動的に実行されます。

    いくつかのデータベースイメージがこのエントリポイントディレクトリを監視しています。これは非常に便利です。

    container_name: postgres 冗長なようです。




    1. Oracleから重複行を削除する

    2. WITHRECURSIVE句を使用して選択する方法

    3. Django-MySQLデータベースに行を追加します

    4. java.sql.SQLException:パラメーター5に値が指定されていませんが、ストリングの長さが5ではなく4です。