I wanted to create on mysql docker container 'academic' database with a few tables like this (script.sql):
use academic_data;
CREATE TABLE University_Departments(
ID INTEGER NOT NULL AUTO_INCREMENT,
Fullname VARCHAR(50) NOT NULL,
Shortcut VARCHAR(20),
Address VARCHAR(50),
Specification Varchar(255),
PRIMARY KEY (ID)
);
CREATE TABLE Professors (
ID INTEGER NOT NULL AUTO_INCREMENT,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
PhoneNumber VARCHAR(50) NOT NULL,
Address VARCHAR(50) NOT NULL,
Email VARCHAR(50) NOT NULL CHECK(Email LIKE '%@%.%'),
Internship VARCHAR(50) NOT NULL,
DEPARTMENT_ID INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (DEPARTMENT_ID) REFERENCES University_Departments (ID)
);
CREATE TABLE Subjects (
ID INTEGER NOT NULL AUTO_INCREMENT,
Name VARCHAR(50) NOT NULL,
ProfessorID INTEGER NOT NULL,
ECTS INTEGER NOT NULL,
Specification VARCHAR(255)
);
CREATE TABLE Students (
ID INTEGER NOT NULL AUTO_INCREMENT,
Name VARCHAR(50) NOT NULL,
Surname VARCHAR(50) NOT NULL,
Degree VARCHAR(50) NOT NULL,
Semester INTEGER NOT NULL,
PhoneNumber VARCHAR(12) NOT NULL CHECK(LENGTH(PhoneNumber) >= 9),
Address VARCHAR(50) NOT NULL,
Email VARCHAR(50) NOT NULL
);
With Dockerfile content like this:
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD 123
ENV MYSQL_DATABASE academic_data
ENV MYSQL_USER admin
ENV MYSQL_PASSWORD 123
ADD academic_db_filler.sql /docker-entrypoint-initdb.d
EXPOSE 3306
Then i build it:
docker build -t academic_db .
run it:
docker run --name academic_db -p 3306:3306 -d academic_db
and executed bash on it:
docker exec -it academic_db /bin/bash
After logging into my created mysql user 'admin' and into 'academic_data' I checked tables to find... only 2 of them:
I was thinking that's maybe some bug (terminal logs don't show any sign of mysql error during creation of tables)... so why Students, Subjects and StudentsSubject couldn't be created?