当前位置: 首页 > 知识库问答 >
问题:

为什么我的docker.compose文件没有创建我的数据库?

曾喜
2023-03-14

我有一个码头工人。编写文件,当我启动它时,我希望它创建一个包含一些表的数据库。

我的码头工人组成:

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 文件:

-- 主机:本地主机 数据库:待办事项

--服务器版本8.0.18

/*!40101 SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /; /! 40101 SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS /; /! 40101 SET@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION /; /! 50503 SET NAMES utf8 /; /! 40103 SET@OLD_TIME_ZONE=@@TIME_ZONE /; /! 40103 SETTIME_ZONE='00:00' /; /! 4SET@OLD_UNIQUE_CHECKS=@UNIQUE_CHECKS,UNIQUE_CHECKS=0 /; /! 40014 SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0 /; /! 40101 SET@OLD_SQL_MODE=@SQL_MODE,SQL_MODE='NO_AUTO_VALUE_ON_ZERO' /; /! 40111 SET@OLD_SQL_NOTES=@SQL_NOTES,SQL_NOTES=0*/;

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 */;
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 时,我看到:

在我的php admin中,我没有看到任何用户或待办事项表:

我错过了什么?

共有1个答案

黎震博
2023-03-14

好吧,当你发帖时,找到答案有点不太好,但对于那些有类似问题的人来说:

当您运行docker-composup命令时,数据库配置会被存储并监督重新启动。要做到这一点,我必须:

docker-compose down -v

答案在这里找到

注意@Sebastiaan伦肯斯的答案

 类似资料:
  • 问题内容: 我一直在关注Docker教程,并通过对现有映像进行更改并用三个不同的标签对其进行标记,在本地OSX计算机上构建了测试映像: 但是,这些图像都没有摘要: 我使用Dockerfile创建的其他测试映像也有摘要。 为什么有些图像有摘要,而有些则没有? 它与创建映像的方式(是否为Dockerfile)有关吗? 问题答案: 首先,请记住,摘要可以代表一个,一个图层或它们的组合(我们通常将该组合称

  • 我的目录上有一个文件。我只需要在我的超文本标记语言页面上的按钮为用户下载此文件。 我想出了这个代码,但问题是,当我单击在我的超文本标记语言页面没有发生任何事情,也没有错误。但是文件没有被下载。 我的密码在烧瓶里 注意:我检查了所有关于堆栈溢出的问题。他们中的大多数人在下载之前把文件放在静态文件夹中,或者其他我不理解他们在做什么的人,因为他们没有在HTML部分显示要做什么

  • 我想用springboot和Mongo数据库对话。 它使用spring-boot-starter-data-mongoDB并自动配置默认bean,这确实允许我的MongoRepository类与DB进行对话。 但是,我想重写默认值。我可以使用application.properties,但我需要能够在应用程序启动时将连接参数作为选项在命令行上传递。 我已经尝试改变端口以破坏它,我已经将debug添

  • 我目前正在做一个JavaFX突围游戏,并建立了一个移动系统,该系统使用公共的userKeyInteraction方法,在我按下左右箭头键时设置蝙蝠对象的速度。这个方法看起来工作得很好,但是我也有一个keyReleased方法,当用户不再按任何一个箭头时,这个方法不仅对bat没有影响(当键被释放时它不会停止),而且根本检测不到keyReleased事件。 正如您在上面看到的,我已经使用debug.t

  • 我正在创建一个进行线性探测以查找键索引的哈希图。如果键已经在索引中,我想增加它的值,而不是向新索引添加一个。 例如,如果我得到字符串“五,五,五”的字数,我的输出是五1,五1,五1,而不是五3。 我认为一定是我的 containsKey 方法,它使用 get 方法来检查我的密钥是否已在映射中。下面是我的Hashmap.java类。

  • 我有一个通过Interface Builder定义的布局约束视图。由于它们无法暂时停用,我决定通过拨打以下电话有选择地删除它们: 但是,之后约束仍然驻留在视图中。约束。此外,我还希望以编程方式添加约束(同样,因为我无法(取消)激活它们): 对我的方法的任何调用都会导致变量wasAdded的值NO。这也反映在用户界面上,它根本没有改变。 最后,我既不能以编程方式添加约束,也不能删除添加到情节提要的约