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

Dockerfile使用python和mysql创建图像

梁俊友
2023-03-14

我有两个容器“web”和“db”。我有一个csv格式的现有数据文件。

问题是,我可以使用docker compose使用模式初始化MySQL数据库,或者只使用参数运行,但如何导入现有数据?我有Python脚本来解析和过滤数据,然后将其插入数据库,但我无法在“db”容器中运行它,因为单个图像是MySQL。

更新1

version: '3'
services:
  web:
    container_name: web
    build: .
    restart: always
    links:
      - db
    ports:
      - "5000:5000"
  db:
    image: mysql
    container_name: db
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_DATABASE: "test"
      MYSQL_USER: "test"
      MYSQL_PASSWORD: "test"
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    ports:
      - "33061:3306"

有一个Python脚本,用于从csv文件读取数据并将其插入数据库,效果很好。现在我想在MySQL容器设置好后运行脚本。(我已经在容器中完成了Python和MySQL的连接)

否则,有谁有更好的导入现有数据的解决方案吗?

共有2个答案

漆雕修德
2023-03-14

从Dockerfile,您可以调用一个脚本(Entrypoint)。在这个脚本中,您可以调用您的python脚本。例如:

DockerFile:

FROM php:7.2-apache

RUN apt-get update    
COPY ./entrypoint.sh /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

这将在应用程序容器中运行你的入口点脚本。确保你的依赖于应用容器中的属性。

仇高韵
2023-03-14

MySQL docker image能够执行shell脚本或sql文件,如果这些脚本/sql文件安装在/docker entrypoint initdb下。d用于此处和此处所述的正在运行的容器。因此,我建议您编写一个SQL文件来读取CSV文件(您应该将其装载到容器中,以便SQL文件可以读取它),以便将其恢复到MySQL,可能类似于这个答案,或者编写一个bash脚本,将CSV导入MySQL,无论对您来说是什么。

您可以在mysql的官方dockerhub页面上查看初始化新实例

 类似资料:
  • 问题内容: 我需要创建一个视图,该视图具有一个名为row_num的列,将在其中插入行号,就像在普通表中自动递增一样。 假设我有这个普通表: 等等… 我要创建的视图是: 等等… 我可以通过一次选择生成row_num: 但是我的问题是将上面的查询与创建视图的查询结合起来。这是我正在尝试的组合查询: 我收到以下错误:#1351-视图的SELECT包含变量或参数 我知道我不能在带有视图的选择内使用选择,但

  • 我试图在Python3.7上创建一个图像(在Thonny上)。我想设置一个以灰色为单位的值的矩阵,所以0将是黑色,255将是白色。这个矩阵将代表我要创建的图像的像素。基本上,我想创建一个基于矩阵的黑白图像。下面是我的代码: 当我运行程序时,它说a是问题所在:“颜色必须是int或tuple”。 谢谢你的帮助,祝你有愉快的一天! 我试着用图像。来自Marray: 有了这个,我应该有一个图像50 x 8

  • 问题内容: matplotlib如何用该数据绘制图形。问题在于可视化从第2列到第3列的距离。最后,它看起来应该像甘特图。 我需要为列1提供2种颜色。对于y轴,选择列0,对于x轴,请选择列2和3。对于每一行,应绘制一条线。第2列是开始时间,第3列是停止时间。 问题答案: 如果我对您的理解正确,则希望在第3列和第4列的x值之间绘制一条水平线,而y值等于在第0列中的水平线。要在给定的y值上绘制一条水平线

  • 主要内容:基本语法,创建基于单表的视图,创建基于多表的视图,查询视图创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。 基本语法 可以使用 CREATE VIEW 语句来创建视图。 语法格式如下: CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下。 :指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。 :指定创建视图的 SELECT 语句,可用于查询多个基础表或源

  • 我想创建一个建筑地图,每个房间都有字典,包含从列表中随机选择的房间(想想旧的学校文本冒险)。 例如: 但是,我想填充它,以便它与建筑匹配。因此,如果先设置房间A,并将房间B设置为北面,则房间B将房间A设置为南面。 所以: 我不知道最好的方法是什么。我不担心事情的顺序,只要一个房间不会同时在另一个房间的南北两边。

  • 问题内容: 对于我的新项目,我想要一种现代的方法,不需要在每个数据库请求上重新加载页面。:)我希望脚本查询数据库并使用查询信息创建表。 我尝试了在互联网上找到的不同脚本。下面的一个最接近我的需求。 index.php getdata.php 但是我只得到一个表,里面有一堆{$ value}。我尝试只用$ value,但是得到了一堆零。 我尝试了一个简单的脚本 然后我得到了som结果,但是使用此脚本