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

ビルド時に入力されたMySQLDockerイメージを作成する方法

    私は今週同じ問題に遭遇しました。 --volumes-fromを必要としない実用的なソリューションを見つけました

    すでに述べた問題は、/var/lib/mysqlということです。 はボリュームであり、DockerはUNVOLUMEをサポートしないため 近い将来、Dockerfileで、デフォルトで空のデータベースから始めたい場合は、データベースストレージにこの場所を使用できなくなります。 ( https://github.com/docker/docker/issues/18287 )。そのため、etc/mysqld.my.cnfを上書きします 、mysqlに新しいdatadirを与えます。

    pwesの答えと一緒に、次のようなDockerileを作成できます。

    FROM mysql:5.6
    
    ENV MYSQL_DATABASE db
    ENV MYSQL_ROOT_PASSWORD pass
    COPY db.sql /docker-entrypoint-initdb.d/db.sql
    COPY my.cnf /etc/mysql/my.cnf
    RUN /entrypoint.sh mysqld & sleep 30 && killall mysqld
    RUN rm /docker-entrypoint-initdb.d/db.sql
    

    唯一の変更点はmy.cnfにあります datadirの場所です:

    .... 
    [mysqld]
    skip-host-cache
    skip-name-resolve
    user        = mysql
    pid-file    = /var/run/mysqld/mysqld.pid
    socket      = /var/run/mysqld/mysqld.sock
    port        = 3306
    basedir     = /usr
    datadir     = /var/lib/mysql2 <-- can be anything except /var/lib/mysql
    tmpdir      = /tmp
    lc-messages-dir = /usr/share/mysql
    explicit_defaults_for_timestamp
    ....
    


    1. SQLServerの重複キー更新に関するMySQLと同等

    2. パスワードなしでpsqlコマンドを使用してバッチファイルを実行する

    3. MSAccessのテーブル関係の種類

    4. godaddyでMySQLとEntityFrameworkを使用したセキュリティ例外