roh*_*han 2 mysql docker dockerfile docker-compose
我能够运行 SQL 文件,如下所示:
将 Dockerfile 设置为:
来自 mysql
ENV MYSQL_DATABASE stock_app
复制 ./sql-scripts/ /docker-entrypoint-initdb.d/
建立形象:
docker build -t 数据库。
运行以下命令:
docker run -d -p 3306:3306 --name db -e MYSQL_ROOT_PASSWORD=密码 db
这是有效的,并且能够验证脚本内的 SQL 命令是否已执行以及表是否已创建。
当我执行以下命令来显示所有图像时,我应该进行哪些更改才能完成所有三个步骤?
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
是否可以选择将运行的 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'
Run Code Online (Sandbox Code Playgroud)
每当您更新 sql 脚本时,您都需要使用docker-compose up -d --force-recreate. 根据设计,mysql 映像将运行“/docker-entrypoint-initdb.d”文件夹中找到的任何 sql 文件,因此您不必在每次重新创建容器时手动运行这些文件。
| 归档时间: |
|
| 查看次数: |
6826 次 |
| 最近记录: |