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

DockerComposeでMySqlデータベースを初期化する方法

    最初の実行時にのみSQLファイルをロードする場合:

    以下の作成ファイルを使用できます

    version: '2.1'
    services:
    
      usermanagement-service:
        build: ./UserManagementService
        restart: on-failure
        ports:
          - "7778:7778"
        depends_on:
          mysqldb:
            condition: service_healthy
    
      mysqldb:
        image: mysql
        volumes:
          - ./mysql-data:/var/lib/mysql
          - ./mysql-init-files:/docker-entrypoint-initdb.d
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: userdb
          MYSQL_USER: testuser
          MYSQL_PASSWORD: testuser
        ports:
          - "3600:3306"
        healthcheck:
          test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
          timeout: 20s
          retries: 10
    

    data.sqlを配置する必要があります およびschema.sql ./docker-entrypoint-initdb.dの下のファイル Volumesを使用するディレクトリ 詳細

    このフォルダ内のSQLファイルは、 DBのデータディレクトリが空の場合(dbサービスの最初の実行)の場合にのみロードされます。 。 (つまり)あなたの場合は./mysql-data フォルダは空である必要があります

    2番目の問題の場合:

    wait-for-it.shを使用する代わりに 、healthcheckを使用できます およびservice_healthy 。ここでusermanagement-service mysqldbが一度開始されます ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]を正常に実行します 指定された間隔で。 healthcheckとdepends_onの詳細については、こちら

    testを取得しました こちら からのコマンド 。




    1. rspecの実行時に、「どのソースにもpg-0.12.2が見つかりませんでした」

    2. PostgreSQLの日付から月の名前を取得する

    3. mySQLで640k行を更新しようとすると、クエリ中にMySQLサーバーへの接続が失われます

    4. Oracle.ManagedDataAccessが接続文字列のエイリアスを解決しない