@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, нет вообще никаких признаков, что скрипт как-то сработал.
Что я делаю не так?
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ответы на вопрос 1
Можно посмотреть логи контейнера через команду docker logs
она покажет, что пошло не так при выполнении запроса
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы