実現したいこと
docker-compose.ymlを立ち上げると同時にmysqlにテーブルを作りたいです
具体的にはcompose upのタイミングでinit.sqlが走ってほしいです
発生している問題・エラーメッセージ
エラーはありませんがいかがログになります
Attaching to english_typing-backend-1, english_typing-db-1 english_typing-db-1 | 2023-07-11 02:15:03+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started. english_typing-backend-1 | Server listening on port 8080 english_typing-db-1 | 2023-07-11 02:15:04+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' english_typing-db-1 | 2023-07-11 02:15:04+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started. english_typing-db-1 | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock' english_typing-db-1 | 2023-07-10T17:15:04.862595Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. english_typing-db-1 | 2023-07-10T17:15:04.869328Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead. english_typing-db-1 | 2023-07-10T17:15:04.869368Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.33) starting as process 1 english_typing-db-1 | 2023-07-10T17:15:04.870615Z 0 [Warning] [MY-013242] [Server] --character-set-filesystem: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. english_typing-db-1 | 2023-07-10T17:15:04.883293Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. english_typing-db-1 | 2023-07-10T17:15:05.282887Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. english_typing-db-1 | 2023-07-10T17:15:05.524468Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. english_typing-db-1 | 2023-07-10T17:15:05.524503Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. english_typing-db-1 | 2023-07-10T17:15:05.525807Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. english_typing-db-1 | 2023-07-10T17:15:05.553190Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock english_typing-db-1 | 2023-07-10T17:15:05.553302Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.33' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
該当のソースコード
docker
1version: "3.8" 2services: 3 db: 4 image: mysql:8.0 5 volumes: 6 - db_data:/var/lib/mysql 7 # マウントと同時にDB作成 8 - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql 9 - ./db/my.cnf:/etc/mysql/my.cnf 10 restart: always 11 platform: linux/arm64/v8 12 environment: 13 MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 14 MYSQL_DATABASE: ${MYSQL_DATABASE} 15 MYSQL_USER: ${MYSQL_USER} 16 MYSQL_PASSWORD: ${MYSQL_PASSWORD} 17 TZ: Asia/Tokyo 18 command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 19 ports: 20 - 3306:3306 21 backend: 22 build: 23 context: ./backend/ 24 dockerfile: Dockerfile 25 volumes: 26 - ./backend/src/:/backend/src/ 27 ports: 28 - 8080:8080 29 depends_on: 30 - db 31 frontend: 32 build: ./frontend 33 volumes: 34 - ./frontend:/frontend 35 ports: 36 - 3000:3000 37 depends_on: 38 - backend 39 40volumes: 41 db_data: {}
init.sql
1-- userテーブル 2CREATE TABLE IF NOT EXISTS `user` ( 3 id INTEGER PRIMARY KEY AUTO_INCREMENT, 4 username VARCHAR(50) NOT NULL, 5 password_hash VARCHAR NOT NULL , 6 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 7 updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 8); 9 10-- genresテーブル 11CREATE TABLE IF NOT EXISTS genres ( 12 id INTEGER PRIMARY KEY AUTO_INCREMENT, 13 name VARCHAR(50) NOT NULL, 14 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 15 updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 16); 17 18-- typing_contentsテーブル 19CREATE TABLE IF NOT EXISTS typing_contents ( 20 id INTEGER PRIMARY KEY AUTO_INCREMENT, 21 genre_id INTEGER NOT NULL, 22 title VARCHAR(50) NOT NULL, 23 content TEXT NOT NULL, 24 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 25 updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 26 FOREIGN KEY (genre_id) REFERENCES genres(id) 27); 28 29-- scoresテーブル 30CREATE TABLE IF NOT EXISTS scores ( 31 id INTEGER PRIMARY KEY AUTO_INCREMENT, 32 user_id INTEGER NOT NULL, 33 score INTEGER NOT NULL, 34 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 35 updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 36 FOREIGN KEY (user_id) REFERENCES `user`(id) 37); 38 39-- mistakesテーブル 40CREATE TABLE IF NOT EXISTS mistakes ( 41 id INTEGER PRIMARY KEY AUTO_INCREMENT, 42 user_id INTEGER NOT NULL, 43 mistake INTEGER NOT NULL, 44 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 45 updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 46 FOREIGN KEY (user_id) REFERENCES `user`(id) 47); 48
試したこと
- ここにマウントすると自動で走ると聞きました
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。