Почему мой файл docker.compose не создает мою базу данных?

У меня есть файл docker.compose, и когда я его запускаю, я хочу, чтобы он создал базу данных с некоторыми таблицами.

Мой докер составляет:

services:
  mysql:
    image: mysql:latest
    container_name: mysqldb
    cap_add:
      - SYS_NICE # CAP_SYS_NICE
    # container_name: my_very_special_server
    ports:
      - 3307:3306
    environment:
      MYSQL_DATABASE: todo
      MYSQL_ROOT_PASSWORD: password!
      MYSQL_PASSWORD: password!
    volumes:
      - ./DbScripts/DumpTodoOnly.sql:/docker-entrypoint-initdb.d/DumpTodoOnly.sql
      - db_data:/var/lib/mysql
    restart: always
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: dev_pma
    links:
      - mysql
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3307
      PMA_ARBITRARY: 1
    restart: always
    ports:
      - 8183:80
  server:
    container_name: server
    build: 
      context: ./BE
      dockerfile: ./Dockerfile.prod
    depends_on:
      - mysql
    environment:
      MYSQL_HOST_IP: mysql
    ports:
      - 4000:4000
    links:
      - mysql
  client:
    container_name: FE
    build: 
      context: ./FE
      dockerfile: ./Dockerfile.prod
    ports:
      - 3000:3000
    environment:
      - CHOKIDAR_USEPOLLING=true
    tty: true
volumes:
  db_data:

структура проекта:

Почему мой файл docker.compose не создает мою базу данных?

фактический файл sql:

-- MySQL дамп 10.13 Дистрибьютор 8.0.18, для Win64 (x86_64)

-- Хост: localhost База данных: todo


-- Версия сервера 8.0.18

/ *! 40101 set @old_character_set_client = @@ charaction_set_client @old_character_set_results = @ @ yapher_set_results rr_10_rr! 40101 set @old_collation_connection = @@ collation_connection rr_11_rr! 50503 set @old_time_zone = @@ time_zone rr_13_rr! 40103 Set time_zone = '+ 00:00' rr_14_rr! 40014 set @old_unique_checks = @@ Unique_checks, ustather_checks = 0 rr_15_rr! 40014 set @ord_foreign_key_checks = @@ @key_key_checks, Entertain_key_checks = 0 rr_16_rr! 40101 set @old_sql_mode = @@ sql_mode, sql_mode = @@ sql_mode, sql_mode = @@ sql_mode, sql_mode = @@ sql_mode 'NO_AUTO_VALUE_ON_ZERO' /; /!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

-- -- Структура таблицы для таблицы todos

DROP TABLE IF EXISTS `todos`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `todos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `todotext` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

-- -- Структура таблицы для таблицы users

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `users` (
  `Id` varchar(36) NOT NULL,
  `Email` varchar(200) NOT NULL,
  `Password` binary(60) NOT NULL,
  `ChangedPassword` bit(1) NOT NULL,
  `FirstName` varchar(45) NOT NULL,
  `LastName` varchar(45) NOT NULL,
  `ImageId` varchar(36) DEFAULT NULL,
  `SeqRef` varchar(36) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  UNIQUE KEY `Email_UNIQUE` (`Email`),
  UNIQUE KEY `Id_UNIQUE` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci KEY_BLOCK_SIZE=2;
/*!40101 SET character_set_client = @saved_cs_client */;

-- -- Процедуры дампа для базы данных "todo"

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/ *! 40101 SET sql_mode = @ OLD_SQL_MODE /; /! 40014 SET FOREIGN_KEY_CHECKS = @ OLD_FOREIGN_KEY_CHECKS /; /! 40014 SET UNIQUE_CHECKS = @ OLD_UNIQUE_CHECKS /; /! 40101 SET character_set_client = @ OLD_CHARACTER_SET_CLIENT /; /! 40101 SET character_set_results = @ OLD_CHARACTER_SET_RESULTS /; /! 40101 SET collation_connection = @ OLD_COLLATION_CONNECTION /; / !40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Дамп завершен 2022-03-16 20:20:30

Когда я запускаю docker-compose up, я вижу:

Почему мой файл docker.compose не создает мою базу данных?

И в моей админке php я не вижу ни пользователей, ни таблицу todos:

Почему мой файл docker.compose не создает мою базу данных?

Что я пропустил?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, это несколько не очень хорошо, чтобы найти ответ при публикации, но для тех, у кого похожая проблема:

По-видимому, когда вы запускаете команду docker-compose up, конфигурация базы данных сохраняется и выдерживает перезагрузку. Для этого мне пришлось:

docker-compose down -v

Ответ найден здесь

Обратите внимание на ответ @Sebastian Renkens

Другие вопросы по теме