簡體   English   中英

如何在MySQL Docker映像中使用腳本執行查詢?

[英]How to execute query using script in MySQL Docker image?

我試圖為用戶提供一個web界面,用戶可以在其中編寫query ,然后在server上執行該query

我正在使用以下帶有latest tag MySQL docker鏡像,即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目錄包含一個我想用於運行mysql服務器和用戶queryscript

我的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為參數時,entyrypoint 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服務之前運行/導入。

嘗試在mysql docker容器中運行“ /etc/init.d/mysqld start”。 / root / server是主機路徑。 Mysql已安裝在容器中而不是主機中。 請不在主機上運行“ /etc/init.d/mysqld start”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM