Docker-compose 初始化数据库

问题描述 投票:0回答:3

我有一个 docker-compose 文件

version: '3.7'

services:        
  db:
      image: mysql:latest
      container_name: mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: 12345
      volumes:
        - ./docker/db:/docker-entrypoint-initdb.d
      ports:
        - "3306:3306"

以及一个用于初始化数据库的 MySQL 脚本。

CREATE DATABASE `aaa`;
USE `aaa`;


CREATE TABLE `building` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) NOT NULL,
  `start_date` date DEFAULT NULL,
  `end_date` date DEFAULT NULL,
  `open` tinyint(4) DEFAULT NULL,
  `address_type` varchar(30) DEFAULT NULL,
  `address_name` varchar(45) DEFAULT NULL,
  `address_number` varchar(45) DEFAULT NULL,
  `cap` char(5) DEFAULT NULL,
  `city` varchar(45) DEFAULT NULL,
  `province` varchar(45) DEFAULT NULL,
  `state` varchar(45) DEFAULT NULL,
  `req_amount` float DEFAULT NULL,
  PRIMARY KEY (`id`)
);

实际上 Docker 会忽略文件 INIT_DB.SQL,如下所示:

mysql | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/DB_INIT.SQL

我想用该文件初始化数据库。我也尝试过:使用 docker-compose.yml tomcat + mysql + war。

哪里错了?

mysql docker docker-compose
3个回答
3
投票
这对我有用:

db: image: mysql command: --default-authentication-plugin=mysql_native_password restart: always ports: - "3306:3306" environment: TZ: "America/Halifax" MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: formulary volumes: - ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql - ./mysql.cnf:/etc/mysql/conf.d/mysql.cnf

你放的和我放的唯一区别是我放的是源文件/目标文件(不仅仅是目录)。另外,您确定 ./docker/db 包含您的文件吗?


0
投票
与第一个答案下面的评论有同样的错误(..是一个目录)。什么对我真正有用;

postgres: volumes: - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d/
    

0
投票
首先,为mysql创建Dockerfile以创建docker-entrypoint-initdb.d/文件夹:

FROM mysql:latest RUN mkdir -p /docker-entrypoint-initdb.d/
其次,更新docker-compose:

version: '3.7' services: db: build: context: . dockerfile: ./db/Dockerfile container_name: mysql restart: always environment: MYSQL_ROOT_PASSWORD: 12345 volumes: - ./docker/db:/docker-entrypoint-initdb.d/ ports: - "3306:3306"

它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.