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

MySQLのセットアップとDockerfile内でのダンプのインポート

    公式のmysqldockerイメージの最新バージョン 起動時にデータをインポートできます。これが私のdocker-compose.ymlです

    data:
      build: docker/data/.
    mysql:
      image: mysql
      ports:
        - "3307:3306"
      environment:
        MYSQL_ROOT_PASSWORD: 1234
      volumes:
        - ./docker/data:/docker-entrypoint-initdb.d
      volumes_from:
        - data
    

    ここでは、docker/dataの下にdata-dump.sqlがあります。 これは、docker-composeが実行されているフォルダーを基準にしています。そのSQLファイルをこのディレクトリ/docker-entrypoint-initdb.dにマウントしています コンテナに。

    これがどのように機能するかを知りたい場合は、 docker-entrypoint.sh GitHubで。データのインポートを可能にするためにこのブロックを追加しました

        echo
        for f in /docker-entrypoint-initdb.d/*; do
            case "$f" in
                *.sh)  echo "$0: running $f"; . "$f" ;;
                *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;;
                *)     echo "$0: ignoring $f" ;;
            esac
            echo
        done
    

    さらに、mysqlコンテナを停止して削除した後もデータを永続化する場合は、docker-compose.ymlに表示されているように別のデータコンテナが必要です。データコンテナDockerfileの内容は非常に単純です。

    FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8
    
    VOLUME /var/lib/mysql
    
    CMD ["true"]
    

    データコンテナは、永続化のために開始状態である必要はありません。



    1. MySQL utf8_general_ciフィールドにある二重エンコードされたUTF-8文字列を修正するにはどうすればよいですか?

    2. エラー1452(23000):子行を追加または更新できません:外部キー制約が失敗します

    3. SQLでほぼ同じアイテムを組み合わせる方法は?

    4. Oracleのsysdateと日付を比較する