Задать вопрос
Davidaa_WoW
@Davidaa_WoW

Почему не выполняется sql скрипт в докер контейнере?

Есть файл инициализации - init.sql
CREATE DATABASE IF NOT EXISTS appDB;

CREATE USER IF NOT EXISTS 'user'@'%' IDENTIFIED BY 'password';
GRANT SELECT,UPDATE,INSERT TO 'user'@'%';
FLUSH PRIVILEGES;

USE appDB;
CREATE TABLE IF NOT EXISTS users (
  ID INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  surname VARCHAR(40) NOT NULL,
  PRIMARY KEY (ID)
);

INSERT INTO users (name, surname)
SELECT * FROM (SELECT 'Alex', 'Rover') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM users WHERE name = 'Alex' AND surname = 'Rover'
) LIMIT 1;

INSERT INTO users (name, surname)
SELECT * FROM (SELECT 'Bob', 'Marley') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM users WHERE name = 'Bob' AND surname = 'Marley'
) LIMIT 1;

INSERT INTO users (name, surname)
SELECT * FROM (SELECT 'Alex', 'Rover') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM users WHERE name = 'Alex' AND surname = 'Rover'
) LIMIT 1;

INSERT INTO users (name, surname)
SELECT * FROM (SELECT 'Kate', 'Yandson') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM users WHERE name = 'Kate' AND surname = 'Yandson'
) LIMIT 1;

INSERT INTO users (name, surname)
SELECT * FROM (SELECT 'Lilo', 'Black') AS tmp
WHERE NOT EXISTS (
    SELECT name FROM users WHERE name = 'Lilo' AND surname = 'Black'
) LIMIT 1;


Создаю docker-compose.yml, монтирую этот файл в необходимую директорию:
version: "3.8"
services:
    db:
        image: "mysql:latest"
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: 1
        volumes:
          - /DB:/docker-entrypoint-initdb.d

В папке DB как раз лежит этот init.sql

Запускаю композ, всё проходит нормально. Заходим в контейнер:
docker exec -it 1_db_1 bash
cd docker-entrypoint-initdb.d
ls


Директория не пустая, создалась куча файлов.
Заходим в sql:
mysql -u root -p
> SHOW DATABASES;


В списке нет appDB, нет вообще никаких признаков, что скрипт как-то сработал.
Что я делаю не так?
  • Вопрос задан
  • 353 просмотра
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
Можно посмотреть логи контейнера через команду docker logs
она покажет, что пошло не так при выполнении запроса
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы