Instal klien mysql pada wadah buruh pelabuhan

Kontainer adalah topik diskusi terpanas di Industri TI karena banyak keuntungannya. Organisasi mengadopsi solusi berbasis wadah untuk bisnis mereka dengan kecepatan yang luar biasa. Menurut 451 Research, pasar wadah aplikasi akan tumbuh empat kali lebih besar di tahun-tahun mendatang

Saat ini, kami bahkan memiliki database seperti MySQL, MongoDB, PostgreSQL, dan banyak lagi dalam bentuk container. Namun, artikel ini akan membahas opsi untuk menyetel dan menjalankan kontainer MySQL. Untuk memulai, kami akan mengambil cadangan dari database MySQL kami yang ada. Selanjutnya, kita akan membuat konfigurasi container dalam bentuk YAML dan menjalankannya menggunakan docker-compose, sebuah toolkit sumber terbuka untuk menyatukan tumpukan container aplikasi

Tanpa basa-basi lagi, mari masuk ke detail seluk beluknya

2. Membangun Konfigurasi Wadah MySQL

Di bagian ini, kita akan membuat wadah MySQL menggunakan alat pembuat docker. Namun, YAML juga menggunakan image dari Dockerfile sebagai konfigurasi dasar di jalur saat ini

2. 1. Komposisi Docker

Pertama, mari buat file YAML dengan tag versi dan layanan. Kami menentukan versi format file di bawah tag versi dari file YAML. Layanan MySQL menggunakan informasi gambar dari Dockerfile, yang kami definisikan dalam konteksnya

Selanjutnya, kami juga menginstruksikan alat untuk menggunakan argumen default yang didefinisikan sebagai variabel lingkungan di. env. Terakhir, tag port akan mengikat wadah dan port mesin host 3306. Mari kita lihat isi dari file YAML penyusun docker yang kita gunakan untuk membuka layanan MySQL

# cat docker-compose.yml
version: '3.3'
services:
### MySQL Container
  mysql:
    build:
      context: /home/tools/bael/dung/B015
      args:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    ports:
      - "${MYSQL_PORT}:3306"

2. 2. Pembuatan Dockerfile

Secara internal, docker-compose menggunakan Dockerfile di jalur yang ditentukan untuk membuat image dan mengatur lingkungan untuk MySQL. Dockerfile kami mengunduh gambar dari DockerHub dan memutar wadah dengan variabel yang ditentukan

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_

Sekarang, mari kita lihat sekilas semua instruksi yang diberikan di cuplikan Dockerfile di bawah ini

  • FROM – Dockerfile yang valid dimulai dengan pernyataan FROM, yang menjelaskan nama image dan tag versi. Dalam kasus kami, kami menggunakan gambar mysql dengan tag terbaru
  • PEMELIHARA – Tetapkan informasi pembuat sebagai metadata penampung yang terlihat melalui pemeriksaan buruh pelabuhan
  • RUN – Jalankan perintah di atas gambar mysql, yang selanjutnya membentuk layer baru. Gambar yang dihasilkan dikomit dan digunakan untuk langkah selanjutnya yang ditentukan di Dockerfile
  • ARG – Meneruskan variabel selama waktu pembuatan. Di sini, kami memberikan empat variabel pengguna sebagai argumen build
  • ENV – Kami menggunakan simbol $ untuk mewakili variabel lingkungan di Dockerfile. Dalam cuplikan di atas, kami menggunakan empat variabel
  • TAMBAH – Selama waktu pembuatan, itu akan menambahkan file ke dalam wadah untuk digunakan di masa mendatang
  • EXPOSE – Jadikan layanan tersedia di luar Docker Container

2. 3. Mengatur Lingkungan

Selain itu, kita dapat membuat file variabel lingkungan sebagai. env di jalur saat ini. File ini berisi semua variabel yang terlibat dalam file penulisan

# cat .env
MYSQL_DATABASE=my_db_name
MYSQL_USER=baeldung
MYSQL_PASSWORD=pass
MYSQL_ROOT_PASSWORD=pass
MYSQL_PORT=3306

2. 4. File Cadangan MySQL

Demi demonstrasi, mari ambil cadangan dari tabel database yang ada. Di sini, kami mengimpor tabel Pelanggan yang sama ke wadah MySQL kami secara otomatis melalui data. .sql

Di bawah ini, kami menampilkan data tabel menggunakan kueri SELECT, yang mengambil data dari tabel yang diminta

mysql> select * from Customers;
+--------------+-----------------+---------------+-----------+------------+---------+
| CustomerName | ContactName     | Address       | City      | PostalCode | Country |
+--------------+-----------------+---------------+-----------+------------+---------+
| Cardinal     | Tom B. Erichsen | Skagen 21     | Stavanger | 4006       | Norway  |
| Wilman Kala  | Matti Karttunen | Keskuskatu 45 | Helsinki  | 21240      | Finland |
+--------------+-----------------+---------------+-----------+------------+---------+
2 rows in set (0.00 sec)

Sebagai bagian dari paket RDBMS MySQL, utilitas mysqldump digunakan untuk mencadangkan semua data dalam database menjadi file teks. Menggunakan perintah sederhana dengan argumen sebaris, kita dapat dengan cepat mengambil cadangan tabel MySQL

  • -u. nama pengguna MySQL
  • -p. Kata sandi MySQL
# mysqldump -u [user name] –p [password] [database_name] > [dumpfilename.sql]

# mysqldump -u root -p my_db_name > data.sql
Enter password:
_

Pada tingkat tinggi, file cadangan akan menjatuhkan tabel apa pun yang bernama Pelanggan di database yang dipilih dan memasukkan semua data yang dicadangkan ke dalamnya

# cat data.sql
-- MySQL dump 10.13  Distrib 8.0.26, for Linux (x86_64)
...
.. output truncated ...
...
DROP TABLE IF EXISTS `Customers`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `Customers` (
  `CustomerName` varchar(255) DEFAULT NULL,
...
.. output truncated ...
...
INSERT INTO `Customers` VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway'),('Wilman Kala','Matti Karttunen','Keskuskatu 45','Helsinki','21240','Finland');
/*!40000 ALTER TABLE `Customers` ENABLE KEYS */;
UNLOCK TABLES;
...
.. output truncated ...
...
-- Dump completed on 2022-07-28  1:56:09

Namun, pembuatan atau penghapusan database tidak dikelola dalam file dump yang dibuat. Kami akan menambahkan cuplikan di bawah ini ke dalam data. sql, yang membuat database jika tidak ada. Itu membuat lingkaran lengkap dengan mengelola database dan tabel. Terakhir, ini juga menggunakan database yang dibuat dengan perintah USE

--
-- Create a database using `MYSQL_DATABASE` placeholder
--
CREATE DATABASE IF NOT EXISTS `MYSQL_DATABASE`;
USE `MYSQL_DATABASE`;
_

Saat ini, struktur direktori terlihat seperti ini

# tree -a
.
├── data.sql
├── docker-compose.yml
├── Dockerfile
└── .env

3. Memutar Kontainer Server MySQL

Sekarang, kita siap untuk memutar wadah melalui docker-compose. Untuk membuka container MySQL, kita perlu menjalankan docker-compose up

Saat kita menelusuri garis keluaran, kita dapat melihat bahwa mereka membentuk lapisan baru di setiap langkah di atas gambar MySQL

Selanjutnya, itu juga membuat database dan memuat data yang ditentukan dalam data. .sql

# docker-compose up
Building mysql
Sending build context to Docker daemon  7.168kB
Step 1/15 : FROM mysql:latest
 ---> c60d96bd2b77
Step 2/15 : MAINTAINER baeldung.com
 ---> Running in a647bd02b91f
Removing intermediate container a647bd02b91f
 ---> fafa500c0fac
Step 3/15 : RUN chown -R mysql:root /var/lib/mysql/
 ---> Running in b37e1d5ba079

...
.. output truncated ...
...

Step 14/15 : RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d
 ---> Running in 34f1d9807bad
Removing intermediate container 34f1d9807bad
 ---> 927b68a43976
Step 15/15 : EXPOSE 3306
 ---> Running in defb868f4207
Removing intermediate container defb868f4207
 ---> 6c6f435f52a9
Successfully built 6c6f435f52a9
Successfully tagged b015_mysql:latest
Creating b015_mysql_1 .. done
Attaching to b015_mysql_1
mysql_1  | 2022-07-28 00:49:03+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.26-1debian10 started.

...
.. output truncated ...
...

mysql_1  | 2022-07-28 00:49:16+00:00 [Note] [Entrypoint]: Creating database my_db_name
mysql_1  | 2022-07-28 00:49:16+00:00 [Note] [Entrypoint]: Creating user baeldung
mysql_1  | 2022-07-28 00:49:16+00:00 [Note] [Entrypoint]: Giving user baeldung access to schema my_db_name
mysql_1  |
mysql_1  | 2022-07-28 00:49:16+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/data.sql
...
.. output truncated ...
...
_

Kita dapat menggunakan opsi -d untuk menjalankan kontainer dalam mode terpisah

# docker-compose up -d
Building mysql
Sending build context to Docker daemon  7.168kB
Step 1/15 : FROM mysql:latest
 ---> c60d96bd2b77
...
.. output truncated ...
...
Step 15/15 : EXPOSE 3306
 ---> Running in 958e1d4af340
Removing intermediate container 958e1d4af340
 ---> c3516657c4c8
Successfully built c3516657c4c8
Successfully tagged b015_mysql:latest
Creating b015_mysql_1 .. done
#
_

4. Kesiapan Klien MySQL

Ini wajib untuk menginstal klien untuk mendapatkan akses mudah ke server MySQL. Bergantung pada kebutuhan kita, kita dapat menginstal klien di mesin host atau mesin atau wadah lain yang memiliki jangkauan IP dengan wadah server

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_0

Sekarang, mari ekstrak jalur instalasi dan versi klien MySQL

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_1

5. Komunikasi Klien Server

Kita dapat mengakses server MySQL yang dikerahkan menggunakan aplikasi klien. Pada bagian ini, kita akan melihat cara mengakses server MySQL melalui klien

Mari kita lihat id dan status kontainer yang dibuat menggunakan perintah docker ps

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_2

Selanjutnya, mari dapatkan alamat IP kontainer untuk mengakses database menggunakan layanan klien yang diinstal. Jika kami mengeluarkan perintah docker inspect, kami akan melihat informasi mendetail tentang container dalam format JSON. Kami juga dapat memilih bidang apa pun dari JSON yang dihasilkan. Di sini, kami mengambil alamat IP dari jangkauan. Pengaturan jaringan. Jaringan -> Alamat IP

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_3

Kami kemudian dapat menggunakan klien untuk masuk ke Server MySQL menggunakan informasi host dan port yang dikonfigurasi

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_4

Di sini, kita dapat melihat bahwa data dipulihkan secara otomatis dari data. .sql

mysql> select * from Customers;
+--------------+-----------------+---------------+-----------+------------+---------+
| CustomerName | ContactName     | Address       | City      | PostalCode | Country |
+--------------+-----------------+---------------+-----------+------------+---------+
| Cardinal     | Tom B. Erichsen | Skagen 21     | Stavanger | 4006       | Norway  |
| Wilman Kala  | Matti Karttunen | Keskuskatu 45 | Helsinki  | 21240      | Finland |
+--------------+-----------------+---------------+-----------+------------+---------+
2 rows in set (0.00 sec)

Sekarang, mari kita coba menambahkan beberapa baris lagi ke tabel database yang sudah ada. Kami akan menggunakan kueri INSERT untuk menambahkan data ke tabel

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_6

Kami juga telah berhasil memasukkan baris baru ke dalam tabel yang dipulihkan. Selamat. Mari kita lihat hasilnya

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_7

Sebagai alternatif, wadah server MySQL dilengkapi dengan instalasi klien MySQL. Namun, itu hanya dapat digunakan di dalam wadah untuk tujuan pengujian apa pun. Sekarang, mari masuk ke container Docker dan mencoba mengakses server MySQL menggunakan klien MySQL default

Perintah docker exec membantu untuk masuk ke wadah yang sedang berjalan menggunakan id wadah. Opsi -i membuat STDIN tetap terbuka, dan -t akan mengalokasikan pseudo-TTY, dan akhirnya, /bin/bash pada akhirnya menempatkan kita di prompt BASH

# cat Dockerfile
FROM mysql:latest

MAINTAINER baeldung.com

RUN chown -R mysql:root /var/lib/mysql/

ARG MYSQL_DATABASE
ARG MYSQL_USER
ARG MYSQL_PASSWORD
ARG MYSQL_ROOT_PASSWORD

ENV MYSQL_DATABASE=$MYSQL_DATABASE
ENV MYSQL_USER=$MYSQL_USER
ENV MYSQL_PASSWORD=$MYSQL_PASSWORD
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD

ADD data.sql /etc/mysql/data.sql

RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql
RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d

EXPOSE 3306
_8

6. Kesimpulan

Singkatnya, kami membahas langkah-langkah untuk membuka wadah server MySQL menggunakan docker-compose. Itu juga secara otomatis memulihkan database dan tabel dari file cadangan. Selanjutnya, kami juga mengakses data yang dipulihkan dan melakukan beberapa operasi CRUD

Bagaimana cara menginstal klien MySQL dalam wadah buruh pelabuhan?

Bagaimana cara menginstal Docker MySQL Container? .
Langkah 1. Tarik Gambar Docker untuk MySQL
Langkah 2. Terapkan dan Mulai Wadah MySQL
Langkah 3. Terhubung dengan Docker MySQL Container

Bagaimana cara menjalankan MySQL dalam wadah Docker?

Menjalankan Kontainer Docker MySQL
Menginstal Kontainer Docker MySQL. Langkah 1. Tarik Gambar MySQL Docker. Langkah 2. Terapkan Kontainer MySQL. Langkah 3. Sambungkan ke Kontainer Docker MySQL
Konfigurasikan Wadah MySQL. Kelola Penyimpanan Data
Mulai, Hentikan, dan Mulai Ulang Kontainer MySQL
Hapus Wadah MySQL

Bagaimana cara menginstal MySQL di Docker Desktop?

Cara Memasang MySQL dengan Docker di Windows .
Menginstal Docker. Jika Anda belum memiliki Docker, Anda dapat mengunduh penginstal dari situs web Docker. .
Dapatkan Gambar Docker MySQL Resmi. .
Tetapkan Kata Sandi Utama dan Jalankan. .
Buat Database dan Pengguna (Opsional).
Hubungkan ke Basis Data MySQL Docker Anda

Bagaimana cara menginstal klien MySQL?

Menginstal MySQL Shell dengan Repositori MySQL APT .
Perbarui informasi paket untuk repositori MySQL APT. sudo apt-get pembaruan
Perbarui paket konfigurasi repositori MySQL APT dengan perintah berikut. sudo apt-get install mysql-apt-config. .
Instal MySQL Shell dengan perintah ini. sudo apt-get install mysql-shell