【发布时间】:2019-07-30 21:13:03
【问题描述】:
我有两个容器“web”和“db”。我有一个 csv 格式的现有数据文件。
问题是我可以使用 docker-compose 使用模式初始化 MySQL 数据库,或者只使用参数运行,但是如何导入现有数据?我有 Python 脚本来解析和过滤数据,然后将其插入 db,但由于单个图像是 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)
否则,任何人有更好的解决方案来导入现有数据?
【问题讨论】:
-
您可能会启动第三个临时容器来运行一次导入。分享您的
docker-compose.yml,我们可以从那里获取! -
您是否有可以共享的现有 Docker Compose 设置?这听起来像是一个非常典型的设置,将 Python 脚本连接到不同容器中的数据库。
-
@Max 我用你建议的方法成功了。但这会有点多余吗?由于一旦导入数据,就不需要存在第三个容器了。
-
@DavidMaze 我用 Python 脚本连接它们,但我想用现有数据设置它们。