LoginSignup
12
8

DockerでMariaDBを立ち上げる

Last updated at Posted at 2020-10-03

Dockerfileを書く

まず、以下のようにDockerfileを書きます。

Dockerfile
FROM mariadb:latest

COPY ./init.sql /docker-entrypoint-initdb.d/

VOLUME [ "/var/lib/mysql" ]

FROMMariaDBの元のなるイメージを指定します。
次に、COPYでローカルのファイルinit.sqlをコンテナ内のディレクトリ/docker-entrypoint-initdb.d/に送ります。
これの目的は、MariaDBのコンテナを立ち上げた際に、最初にテーブル等を配置しておくことです。
最後にVOLUMEでコンテナ内のMariaDBのデータをローカルに保存します。
これの目的は、MariaDBのコンテナを停止してもデータが消えないように、ローカルにセーブデータを保存することです。

起動時にテーブルを用意しておく

以下のように、init.sqlを用意しておくことで、コンテナ立ち上げ時にテーブルが作成された状態になります。

init.sql
CREATE DATABASE test;
USE test;
CREATE TABLE test(name varchar(10));

ここでは、まずtestという名前のデータベースを作成しています。
次に、データベースtestを選択します。
最後に、testという名前のテーブルを作成しています。
ここで、列名はnameのみで、その型は可変長文字列としています。

コンテナを立ち上げる

上記のファイルを作成したら、DockerImageファイルを作成します。
上記のファイルを置いているディレクトリで、以下のコマンドを実行します。

$ docker build -t mariadb .

更に、以下のコマンドでコンテナを立ち上げます。

$ docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -dp 3306:3306 mariadb

ここでは、コンテナ名 をmariadbとしています。
データベースのパスワードはpasswordとしています。これがないと起動に失敗します。
開放するポートはローカル側ポート番号:コンテナ側ポート番号で指定します。ここではどちらも3306を開けることで、localhost:3306でアクセスできるようになります。

因みに

以下のコマンドでコンテナの中に入ることができます(Docker Desktop等からも入れますが)。

$ docker exec -it mariadb bash

さらに、コンテナの中に入り、以下を実行することで、コマンドライン上からSQLを実行することができます。

root@4ec9744dff6e:/# mariadb -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.5-MariaDB-1:10.5.5+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>
12
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8