gpt4 book ai didi

mysql - Dockerfile - 运行 init sql 文件来设置表

转载 作者:行者123 更新时间:2023-12-02 21:31:04 30 4
gpt4 key购买 nike

我能够运行 SQL 文件,如下所示:

  1. 将 Dockerfile 设置为:

    来自mysql

    ENV MYSQL_DATABASE stock_app

    复制./sql-scripts//docker-entrypoint-initdb.d/

  2. 构建图像:

    docker build -t db。

  3. 运行以下命令:

    docker run -d -p 3306:3306 --name db -e MYSQL_ROOT_PASSWORD=密码db

这是有效的,并且能够验证脚本内的 SQL 命令是否已执行以及表是否已创建。

当我执行以下命令来显示所有图像时,我应该进行哪些更改才能完成所有三个步骤?

docker-compose up -d

是否可以选择将运行的 SQL 文件放入 Dockerfile 中,而不是手动构建 db 镜像并运行命令来执行 SQL 文件?也就是将上面提到的步骤3包含在Dockerfile中。

最佳答案

您可能甚至不需要 Dockerfile,除非您正在执行上面未列出的其他操作。您应该能够使用像这样的简单 docker-compose 来做您想做的事情:

version: '3.3'
services:
database:
image: mysql
volumes:
- "./sql-scripts:/docker-entrypoint-initdb.d"
environment:
MYSQL_DATABASE: stock_app
MYSQL_ROOT_PASSWORD: password
ports:
- '3306:3306'

每当您更新 SQL 脚本时,您都需要使用 docker-compose up -d --force-recreate 重新创建容器。根据设计,mysql 镜像将运行“/docker-entrypoint-initdb.d”文件夹中找到的任何 sql 文件,因此您不必在每次重新创建容器时手动运行这些文件。

关于mysql - Dockerfile - 运行 init sql 文件来设置表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64469458/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com