Я пытаюсь дать пользователю web
интерфейс, в котором пользователь может написать query
а затем я буду выполнять этот query
на своем server
.
Я использую следующее изображение docker
MySQL
с latest tag
т.е. mysql:latest
https://hub.docker.com/_/mysql/
Таким образом, я запускаю изображение докера, используя эту команду
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 '
Сценарий entyrypoint имеет только initdb, если mysqld является аргументом; в вашем случае он видит 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
Создайте папку docker-entrypoint-initdb.d внутри папки conf и все файлы sql внутри этой папки
Дерево выглядит это нравится
|____docker-compose.yml
|____conf
|___my.cnf
|___docker-entrypoint-initdb.d
|___one.sql
|___two.sql
Вы можете поместить любые файлы .sh или.sql, и они будут запущены/импортированы до того, как служба mysql будет доступна за пределами контейнера.
Попробуйте запустить "/etc/init.d/mysqld start" внутри контейнера docker mysql./root/server - это путь к хост-машине. Mysql был установлен в контейнере не на главной машине. Запустите "/etc/init.d/mysqld start" не на главной машине.
#!/bin/bash set -e exec 1> $"/usercode/logfile.txt" exec 2> $"/usercode/errors" /etc/init.d/mysqld start # These output and error files are in mounted folder which i check after running script #here i want to run that query and then get out of conatiner