Docker: Mysql 8 Docker ve Docker-Compose ile nasıl çalıştırılır

Bu kılavuzda Mysql 8’in docker ve docker compose ile yerel olarak nasıl çalıştırılacağını keşfedeceğiz.  Mysql 8’i makinenize kurmadan yerel olarak çalıştırmak istiyorsanız veya Mysql’in birden fazla sürümünü sorunsuz bir şekilde çalıştırmak istiyorsanız bu yararlı olabilir.

 

Önkoşullar

Takip etmek için aşağıdakilere sahip olduğunuzdan emin olun:

  • Docker yerel olarak yüklü olmalı
  • Docker compose yerel olarak yüklü olmalı
  • Komut satırıyla ilgili temel bilgiler

Docker run komutunu kullanma

Amacımıza ulaşmak için docker run komutunu kullanacağız.  İstediğimiz MySQL sürümü mysql:8.0’dır – MySQL görüntüsünün en son sürümü.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ docker run -d \
    --name my-mysql \
    -p 3306:3306 \
    -v ~/apps/mysql:/var/lib/mysql \
    --user 1000:1000 \
    -e MYSQL_ROOT_PASSWORD=S3cret \
    -e MYSQL_PASSWORD=An0thrS3crt \
    -e MYSQL_USER=citizix_user \
    -e MYSQL_DATABASE=citizix_db \
    mysql:8

Unable to find image 'mysql:8' locally
8: Pulling from library/mysql
b380bbd43752: Pull complete
f23cbf2ecc5d: Pull complete
30cfc6c29c0a: Pull complete
b38609286cbe: Pull complete
8211d9e66cd6: Pull complete
2313f9eeca4a: Pull complete
7eb487d00da0: Pull complete
4d7421c8152e: Pull complete
77f3d8811a28: Pull complete
cce755338cba: Pull complete
69b753046b9f: Pull complete
b2e64b0ab53c: Pull complete
Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87
Status: Downloaded newer image for mysql:8
38dc3037177eab4a56366b14a4acfdbb6ae98770e03d509046e05aa2a1ce21d0

Yukarıdaki komutta:

  • -d, docker konteynerinin bağımsız bir işlem olarak çalışmasını bildirir.  Konteyneri arka planda çalıştırır ve konteyner kimliğini yazdırır
  • -p bağlantı noktası eşlemesi içindir.  Container'a, konteyner portunu harici olarak açığa çıkarması talimatını veriyoruz.  Konteyner bağlantı noktası 3306, ana bilgisayar bağlantı noktası 3306 ile eşlenir. Bu, hizmete localhost:3306 aracılığıyla erişilebileceği anlamına gelir.
  • -v yönergesi birimleri bağlamak için kullanılır.  Bizim durumumuzda /var/lib/mysql konteyner birimini ~/apps/mysql ana bilgisayar yoluna monte ediyoruz.  Konteynerler, çalıştığı süre boyunca verilerini içerecek olan geçici cihazlardır.  Bir konteyner durdurulduğunda verileri kaybolur.  Birimlerin takılması, verilerin kapsayıcı yeniden başlatıldığında yeniden kullanılabilecek bir ana bilgisayar yoluna eklenmesini sağlar.
  • –user argümanı, konteyneri isteğe bağlı bir kullanıcıyla (root olmayan kullanıcı) çalıştırmak için kullanılır.  Bu, mysqld’i belirli bir UID/GID ile çalıştırmanız gerektiğinde gerçekleşir.
  • -e argümanı ortam değişkenleri içindir.  Sağlanan ortam değişkenleri bir Mysql kullanıcısı, parolası ve veritabanı oluşturmak için kullanılacaktır.

Konteynerimizin beklendiği gibi çalıştığını kontrol etmek için docker ps komutunu kullanın:

1
2
3
$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
a1d77a05bd18   mysql:8   "docker-entrypoint.sh"   30 seconds ago   Up 29 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   my-mysql

Benim durumumda konteyner, ona verdiğimiz isim olan my-mysql olarak çalışıyor.  Etkileşimli olarak /bin/bash komutunu çalıştırırken docker exec komutunu kullanarak konteynere giriş yapabiliriz.  Burada ayrıca yukarıda belirttiğimiz kimlik bilgileri ile postgtres’e giriş yapıp versiyon kontrolü yapıyoruz.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ docker exec -it my-mysql /bin/bash
citizix@a1d77a05bd18:/$ mysql -u citizix_user -pAn0thrS3crt
mysql: Warning Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.27    |
+-----------+
1 row in set (0.00 sec)

mysql>

Kullanılmadığı zaman kabı temizlemeniz gerekiyorsa, şu komutu kullanarak kabı durdurabilir ve kaldırabilirsiniz:

1
2
3
4
5
$ docker stop my-mysql
my-mysql

$ docker rm my-mysql
my-mysql

Docker-compose aracını kullanma

Docker-compose ile aynı işlevselliği elde edebiliriz.  Docker Compose, çok kapsayıcılı Docker uygulamalarını tanımlamaya ve çalıştırmaya yönelik bir araçtır.  Compose ile uygulama hizmetlerinizi yapılandırmak için bir YAML dosyası kullanırsınız.

Docker Compose, hizmeti (bizim durumumuzda Mysql), kullanılacak görüntü, kullanıma sunulacak bağlantı noktaları, bağlanacak birimler ve ortam değişkenleri gibi özelliklerle tanımlamanıza olanak tanır.

Yukarıdaki işlevselliğe ulaşmak için docker-compose’u nasıl kullanacağımız aşağıda açıklanmıştır.  Bunu docker-compose.yaml olarak kaydedin:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
version: '3.9'

services:
  mysql:
    image: mysql:8
    ports:
      - 3306:3306
    volumes:
      - ~/apps/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=S3cret
      - MYSQL_PASSWORD=An0thrS3crt
      - MYSQL_USER=citizix_user
      - MYSQL_DATABASE=citizix_db

Şimdi kapları getirin:

1
2
$ docker-compose up -d
Creating tmp_mysql_1 ... done

Komutlar:

  • up konteyneri çalıtırır
  • -d müstakil moda alır

Verify the container processes using the ps command:

1
2
3
4
5
$ docker-compose ps
   Name                 Command             State                         Ports
-----------------------------------------------------------------------------------------------------
tmp_mysql_1   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp,
                                                    33060/tcp

Kapsayıcıya giriş yapmak ve MySQL’e giriş yapmak için şunu kullanın:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ docker-compose exec mysql /bin/bash

root@25c2472a190d:/# mysql -u citizix_user -pAn0thrS3crt
mysql: [1 Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.27    |
+-----------+
1 row in set (0.00 sec)

mysql>

 

 

Yazının orijinalini buradan okuyabilirsiniz.