如何在mysql docker映像中使用脚本执行查询?

aiazj4mn  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(308)

我试图给用户一个 web 用户可以在其中编写 query 然后我会执行这个 query 在我的 server .
我正在使用以下
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 `

g9icjywg

g9icjywg1#

如果mysqld是参数,entyrypoint scit只执行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服务可用之前运行/导入。

hi3rlvi2

hi3rlvi22#

尝试在mysql docker容器中运行“/etc/init.d/mysqld start”/根/服务器是主机路径。mysql已安装在容器中,而不是主机中。请不要在主机上运行“/etc/init.d/mysqld start”。

相关问题