首页 > 解决方案 > 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:/#

标签: dockerdocker-compose

解决方案


你检查过其他问题吗?不执行 docker-entrypoint-initdb 中的 MySQL 脚本- 如果要应用 /docker-entrypoint-initdb.d 中的 SQL 脚本,/var/lib/mysql 必须为空。


推荐阅读