سفارشی کردن پایگاه داده MySQL در داکر — راهنمای کاربردی
توسعهدهندگان زیادی از داکر برای راهاندازی یک پایگاه داده محلی استفاده میکنند. بدین ترتیب تست کردن کد و نوشتن دادهها بدون نصب و پیکربندی ابزارهای زیاد ممکن خواهد بود. در این مقاله، با روش سفارشی کردن پایگاه داده داکر آشنا میشویم. همچنین در نوشته «داکر چیست» نیز به معرفی جامع داکر و ارائه راهنمایی برای شروع به کار با آن پرداخته شده است. با این که مراحل کار برای پایگاه داده MySQL توضیح داده میشود، اما PostgreSQL نیز روال مشابهی دارد. با ما همراه باشید و یک MySQL سفارشی بسازید که شامل جداول و دادههای مطلوب شما باشد.
یک مقاله آموزشی جامع دیگر نیز برای آموزش داکر در مجله فرادرس منتشر شده است که مطالعه آن به علاقهمندان پیشنهاد میشود:
ایجاد اسکریپتهای SQL
ما اسکریپتهای SQL خود را ایجاد خواهیم کرد که شامل آن دسته از گزارههای SQL هستند که میخواهیم روی پایگاه داده خود اجرا کنیم. یک دایرکتوری ایجاد میکنیم که در آن کار خواهیم کرد.
ضمناً یک دایرکتوری فرعی ایجاد میکنیم که اسکریپتهای sql. را در آن ذخیره میکنیم.
$ mkdir -p ~/my-mysql/sql-scripts $ cd ~/my-mysql/sql-scripts
ما میخواهیم پایگاه داده خود را با یک جدول به نام «کارمندان» (employees) سفارشیسازی کنیم. جدول باید شامل یک ردیف با یک کارمند و ستونهای نام، نام خانوادگی، دپارتمان و ایمیل (first name ،last name ،department و email) باشد.
یک فایل به نام CreateTable.sql بسازید. این فایل شامل گزاره SQL برای ایجاد جدولی به نام employees خواهد بود. ما میخواهیم چهار ستون به جدول اضافه کنیم.
1CREATE TABLE employees (
2first_name varchar(25),
3last_name varchar(25),
4department varchar(15),
5email varchar(50)
6);
یک فایل به نام InsertData.sql بسازید. این فایل شامل گزاره ما برای درج دادهها در جدول employees است.
1INSERT INTO employees (first_name, last_name, department, email)
2VALUES ('Lorenz', 'Vanthillo', 'IT', 'lvthillo@mail.com');
دستور tree را اجرا کنید تا تأیید شود که دو اسکریپت وجود دارد و در دایرکتوری درستی ذخیره شده است.
1$ cd ~/my-mysql
2$ tree
3└── sql-scripts
4 ├── CreateTable.sql
5 └── InsertData.sql
ایجاد یک ایمیج داکر برای پایگاه داده سفارشی شده MySQL
اکنون که اسکریپتها آماده هستند، میتوانیم یک Dockerfile بنویسیم تا ایمیج داکر خود را بر مبنای ایمیج رسمی MySQL (+) بسازیم.
$ cd ~/my-mysql/ $ vi Dockerfile
محتوای داکرفایل به صورت زیر است:
# Derived from official mysql image (our base image) FROM mysql # Add a database ENV MYSQL_DATABASE company # Add the content of the sql-scripts/ directory to your image # All scripts in docker-entrypoint-initdb.d/ are automatically # executed during container startup COPY./sql-scripts/ /docker-entrypoint-initdb.d/
ایمیج داکر خود را بسازید:
$ cd ~/my-mysql/ $ docker build -t my-mysql. Sending build context to Docker daemon 4.608kB Step 1/2: FROM mysql latest: Pulling from library/mysql Digest: sha256:691c55aabb3c4e3b89b953dd2f022f7ea845e5443954767d321d5f5fa394e28c Status: Downloaded newer image for mysql:latest ---> 5195076672a7 Step 2/2: ADD sql-scripts/ /docker-entrypoint-initdb.d/ ---> 25065c3d93c0 Successfully built 25065c3d93c0 Successfully tagged my-mysql:latest
و کانتینر MySQL خود را از ایمیج بسازید:
$ docker run -d -p 3306:3306 --name my-mysql \ -e MYSQL_ROOT_PASSWORD=supersecret my-mysql
اینک میتوانیم روال کار را تأیید کنیم. درون کانتینر از exec استفاده خواهیم کرد:
1$ docker exec -it my-mysql bash
2root@c86ff80d7524:/# mysql -uroot -p
3Enter password: (supersecret)
4mysql> show databases;
5+--------------------+
6| Database |
7+--------------------+
8| information_schema |
9| company |
10| mysql |
11| performance_schema |
12| sys |
13+--------------------+
145 rows in set (0.00 sec)
15mysql> use company;
16Reading table information for completion of table and column names
17You can turn off this feature to get a quicker startup with -A
18Database changed
19mysql> show tables;
20+-------------------+
21| Tables_in_company |
22+-------------------+
23| employees |
24+-------------------+
251 row in set (0.00 sec)
26mysql> show columns from employees;
27+------------+-------------+------+-----+---------+-------+
28| Field | Type | Null | Key | Default | Extra |
29+------------+-------------+------+-----+---------+-------+
30| first_name | varchar(25) | YES | | NULL | |
31| last_name | varchar(25) | YES | | NULL | |
32| department | varchar(15) | YES | | NULL | |
33| email | varchar(50) | YES | | NULL | |
34+------------+-------------+------+-----+---------+-------+
354 rows in set (0.00 sec)
36mysql> select * from employees;
37+------------+-----------+------------+-------------------+
38| first_name | last_name | department | email |
39+------------+-----------+------------+-------------------+
40| Lorenz | Vanthillo | IT | lvthillo@mail.com |
41+------------+-----------+------------+-------------------+
421 row in set (0.01 sec)
چنان که میبینید اسکریپت کار میکند. بدین ترتیب ما ایمیج داکر پایگاه داده MySQL سفارشی خودمان را داریم. این راهحلی عالی برای توسعه محلی بین چند توسعهدهنده است. با اشترک ایمیج داکر هر توسعهدهنده میتواند با شروع کانتینر از ایمیج پایگاه داده مربوطه استفاده کند.
با این وجود، لازم به اشاره است که این راهحل همواره هم بهترین راهحل نیست:
- اگر دادههای زیادی وارد کنید، اندازه ایمیج به مقدار زیادی افزایش خواهد یافت.
- زمانی که دادهها بهروزرسانی میشوند، باید یک ایمیج جدید بسازیم.
به همین دلیل است که روش دیگری برای سفارشیسازی MySQL داکر نیز وجود دارد.
استفاده از Bind Mounts برای سفارشی کردن پایگاه داده MySQL در داکر
در بخش آخر، اسکریپتها را درون کانتینر رسمی داکر MySQL سوار میکنیم.
$ docker run -d -p 3306:3306 --name my-mysql \ -v ~/my-mysql/sql-scripts:/docker-entrypoint-initdb.d/ \ -e MYSQL_ROOT_PASSWORD=supersecret \ -e MYSQL_DATABASE=company \ Mysql
بدین ترتیب بار دیگر اسکریپت تأیید میشود. از همان مراحل که قبلاً اجرا کردیم استفاده میکنیم: exec درون کانتینر استفاده میشود تا وجود جدول و دادهها بررسی شود.
این روش انعطافپذیر است، اما توزیع آن در میان توسعهدهندهها کمی دشوارتر خواهد بود. همه توسعهدهندهها باید اسکریپتها را در دایرکتوری خاصی در سیستم محلی خود ذخیره کنند و باید در زمان اجرای دستور docker run به یک دایرکتوری خاص اشاره کنند..
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای پایگاه داده
- آموزش پایگاه داده MySQL
- مجموعه آموزشهای برنامهنویسی
- آموزش پایگاه داده MySQL — مجموعه مقالات جامع وبلاگ فرادرس
- چگونه دیتابیس MySQL را بر روی ویندوز نصب کنیم؟
- آموزش SQL Server Management Studio | کامل، رایگان و گام به گام
- داکر چیست ؟ | راهنمای شروع به کار با Docker — رایگان و به زبان ساده
==