dockerのvolumesでmysqlのコンテナーのdocker-entrypoint-initdb.dのディレクトリーをマウントしたフォルダにSQL文のコードを書いたファイルを二つ作成しました。一つはCREATE DATABASEのSQL文です。もう一つはCREATE TABLEのSQL文です。
コンテナー起動後、phpMyAdminでデータベースは作成されていますが、テーブルは作成されていませんでした。テーブルを作るSQL文をターミナルで実行するとテーブルが作成されるのでSQL文自体には問題なさそうです。原因がわからないのでなにかアドバイスを頂けると嬉しいです。
ちなみにSQL文のファイル名は1_createdb.sqlと2_create_table.sqlです。以下がSQL文です。
SQL
1CREATE DATABASE aaa;
SQL
1CREATE TABLE IF NOT EXISTS aaa.users ( 2 id INT(11) NOT NULL AUTO_INCREMENT , 3 email VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 4 password VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 5 delete_flg BOOLEAN NOT NULL DEFAULT FALSE , 6 create_date DATETIME NOT NULL , 7 update_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , 8 PRIMARY KEY (id) 9) ENGINE = InnoDB;
docker-compose.ymlは以下です。
yml
1version: '3' 2 3services: 4 php: 5 build: 6 context: ./docker_php 7 dockerfile: Dockerfile 8 volumes: 9 - ./php.ini:/usr/local/etc/php/php.ini 10 - ./:/var/www/html 11 ports: 12 - 80:80 13 depends_on: 14 - mysql 15 mysql: 16 build: 17 context: ./docker_mysql 18 dockerfile: Dockerfile 19 volumes: 20 - ./mysql:/var/lib/mysql 21 - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d 22 environment: 23 - MYSQL_ROOT_PASSWORD=root 24 - MYSQL_DATABASE=aaa 25 - MYSQL_USER=root 26 - MYSQL_PASSWORD=root 27 phpmyadmin: 28 image: phpmyadmin/phpmyadmin 29 environment: 30 - PMA_ARBITRARY=1 31 - PMA_HOST=mysql 32 - PMA_USER=root 33 - PMA_PASSWORD=root 34 depends_on: 35 - mysql 36 ports: 37 - 4040:80 38 volumes: 39 - ./phpmyadmin/sessions:/sessions 40
mysqlのDockerfileは以下です。
Dockerfile
1FROM mysql:5.7 2 3# timezone 4RUN cp -p /usr/share/zoneinfo/Japan /etc/localtime 5 6# modify my.cnf 7RUN sed -i -e "s/^sql_mode=.*$/sql_mode=NO_ENGINE_SUBSTITUTION/" /etc/mysql/my.cnf
回答1件
あなたの回答
tips
プレビュー