docker - docker mysql 不在 sql 文件中创建表
问题描述
我按照 docker mysql image 的官方文档中的说明在服务启动时初始化数据库,但似乎 mysql 忽略了 sql 查询
version: '3'
services:
# nginx
nginx-service:
image: nginx:stable-alpine
container_name: nginx-container
restart: unless-stopped
ports:
- "8000:80"
volumes:
- ./application:/var/www/project
- ./docker/nginx:/etc/nginx/conf.d
depends_on:
- application-service
- database-service
networks:
- php-application
# php
application-service:
build:
context: .
dockerfile: docker/php/Dockerfile
container_name: application-container
restart: unless-stopped
volumes:
- ./application:/var/www/project
networks:
- php-application
# mysql
database-service:
image: mysql:5.7
container_name: database-container
ports:
- "6306:3306"
restart: unless-stopped
environment:
MYSQL_DATABASE: user
MYSQL_ROOT_PASSWORD: 1234
MYSQL_PASSWORD: 1234
MYSQL_USER: root
command: --log-bin=/var/lib/mysql/mysql-bin.log --binlog-format=ROW --server-id=1
volumes:
- ./docker/db:/docker-entrypoint-initdb.d/:ro
- ./db-data:/var/lib/mysql:rw
networks:
- php-application
网络:php-应用程序:
sql 文件包含一个用于创建表的查询,如下所示:
CREATE TABLE `user` (
`id` INT AUTO_INCREMENT NOT NULL,
`email` VARCHAR(255) NOT NULL,
`password` VARCHAR(100) NOT NULL,
`created_at` DATETIME DEFAULT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
当我登录到容器时,我找到了 sql 文件
root@6d6ab4ba11e6:/# ls docker-entrypoint-initdb.d/init_db.sql root@6d6ab4ba11e6:/#
解决方案
你检查过其他问题吗?不执行 docker-entrypoint-initdb 中的 MySQL 脚本- 如果要应用 /docker-entrypoint-initdb.d 中的 SQL 脚本,/var/lib/mysql 必须为空。
推荐阅读
- linux - 从用户空间到设备的 I/O
- python - 我收到此错误“NoneType”对象没有属性“组”
- email - 在 ASP 中发送多条消息
- spring - 在配置类中创建的模拟 bean - 使用 JUnit 5 的 Spring Boot
- python - 使用 jedi-vim 使用 gobject introspection 在 python 中自动完成自己的 gobject 派生库
- html - 如何制作一个从右到左宽度为 400px 的 div
- c# - 有没有办法增加在 .NET 核心的 POST 响应中发送的数据文件的大小?
- airflow-scheduler - Airflow 2.0 中的 DAG 计划
- css - 当 flexbox 方向为行时,Mat-tab 从其父级扩展
- css - 如何显示模板而不是模板的代码?