python - Dockerfile 使用 python 和 mysql 创建镜像

标签 python mysql docker

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

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

更新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的连接)

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

最佳答案

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

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

关于python - Dockerfile 使用 python 和 mysql 创建镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55069956/

相关文章:

python - setuptools 可以与 python 3.2.x 一起使用吗

java - Eclipse 将数据插入 SQLite 数据库,没有这样的表

mysql - 仅使用实体关系图查询 MYSQL 格式 [脑力挑战]

python - 如何将多个python脚本混合成一个shell脚本?

azure - `docker context create aci` `--location` 参数似乎没有效果

python - pandas 中 resample 和 asfreq 的不同行为

python - 如何在 Digital Ocean 上安装 python 2.7 mysql

python - 在 Django 模型中跟踪自上次保存以来的变化

mysql优化

Docker Compose : Which syntax produces a bind mount, 生成卷