У меня есть файл 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:
структура проекта:
фактический файл sql:
-- Хост: 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 */;
/*!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, я вижу:
И в моей админке php я не вижу ни пользователей, ни таблицу todos:
Что я пропустил?
Хорошо, это несколько не очень хорошо, чтобы найти ответ при публикации, но для тех, у кого похожая проблема:
По-видимому, когда вы запускаете команду docker-compose up, конфигурация базы данных сохраняется и выдерживает перезагрузку. Для этого мне пришлось:
docker-compose down -v
Ответ найден здесь
Обратите внимание на ответ @Sebastian Renkens