mysql - 如何在 MySQL Docker 映像中使用脚本执行查询?
问题描述
我试图给用户一个web
界面,用户可以在其中编写一个query
,然后我将query
在我的server
.
我在ie中使用以下MySQL
docker
图像latest tag
mysql:latest
https://hub.docker.com/_/mysql/
所以我正在使用这个命令运行 docker 镜像
docker run -it --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -v /root/ServerCode/:/usercode mysql /bin/bash
我的root/ServerCode
目录包含一个script
我想用于运行mysql
服务器和用户的query
.
我script
的是
#!/bin/bash
set -e
/etc/init.d/mysqld start
它给了我error
bash: /etc/init.d/mysqld: No such file or directory
我也试过用这个
service mysqld start
它也在给予error
mysqld: unrecognized service
编辑:
#!/bin/bash
set -e
exec 1> $"/usercode/logfile.txt"
exec 2> $"/usercode/errors"
# These output and error files are in mounted folder which i check after running script
/etc/init.d/mysqld start // run sql server here
#here i want to run that query and then get out of conatiner `
解决方案
如果mysqld是参数,则入口点 scipt 仅执行 initdb ;在您的情况下,它会看到bash,因此会跳过 initdb 并使用其参数运行 bash 。
如果您只是在 mysql 运行后尝试运行一些设置脚本,您是否查看过/docker-entrypoint-initdb.d/?
创建一个 docker-compose.yml
version: '2'
services:
db:
image: mysql
container_name: mysql
restart: always
volumes:
- /var/db/startuphry/mysql:/var/lib/mysql
- ./conf/my.cnf:/etc/mysql/conf.d/settings.cnf
- ./conf/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
ports:
- "${MYSQL_PORT}:3306"
创建一个conf文件夹,将my.cnf文件添加到其中
[mysqld]
local-infile=0
在conf文件夹中创建文件夹docker-entrypoint-initdb.d并在此文件夹中创建所有 sql 文件
树看起来像这样
|____docker-compose.yml
|____conf
|___my.cnf
|___docker-entrypoint-initdb.d
|___one.sql
|___two.sql
您可以将任何.sh文件或 .sql 文件放在那里,它们将在 mysql 服务在容器外可用之前运行/导入。
推荐阅读
- wordpress - 如何通过 ACF 选择标签而不是值进行排序?
- javascript - javascript - `` 在同一行中。其他在表单之外生成的元素
- c# - A* 寻路算法 - 在计算最短路径时卡住了
- php - 如何修复 Session_start 警告?
- time-complexity - 哈希表与二叉搜索树、大 O 访问和搜索
- c# - 使用 JSON 对字典进行序列化和反序列化
- python - PyQt 线程。获取动态输出
- lua - SendChatMessage 是 1.13.3 中的受保护函数?
- android - 将文件保存到 filesDir 但转到数据/用户
- activemq-artemis - 无法启动嵌入在 JBoss EAP 7.2 中的 ActiveMQ Artemis 的 Web 控制台