Hatena::ブログ(Diary)

@jote_の日記 Twitter

2018-08-26

Docker MySQL

| 02:11

公式のmysql-docker を使ってテーブルを作りcsvインポートする 作業の記録を残す

Dockerイメージを作成する

ベース・イメージを設定
FROM mysql:latest
my.cnf をカスタマイズする
  • secure-file-priv を空文字にする

デフォルトではNULLが設定されている。本来はちゃんと設定しなければいけないが Dockerだしlocalなので空文字を入れてエラーを回避する。

secure-file-priv= ""
  • Dockerfileと同ディレクトリにカスタマイズしたmy.cnfを置く
  • Dockerfileにカスタマイズしたmy.cnfを上書きするよう bashを書く
ADD my.cnf /etc/mysql/my.cnf
    • 補足: my.cnfの場所を探すコマンド
$ mysql --help | grep my.cnf
テーブル作成

/docker-entrypoint-initdb.d ディレクトリに .sql, .sh, .sql.gz ファイルを置くとイメージ作成時に実行してくれる。

  • 実行して欲しいSQLを作る
CREATE DATABASE `hoge`;

USE `hoge`;

CREATE TABLE `huga` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(40) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • Dockerfileに .sql ファイルを置く設定をする
ADD create-table.sql /docker-entrypoint-initdb.d

イメージを作る

$ cd docker-dir
$ docker build -t hoge-mysql .

Docker のコンテナを作る

$ docker run -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 --name  hoge-mysql  hoge-mysql 

テーブルにデータを入れる

  • 作成した Dockerコンテナへデータを送る
    • データはテーブルにインサートできるよう csvにしておく
    • 実行できるコマンドが少ない為、標準入力の内容を指定ディレクトリへコピーしてみた
$ cat huga-data.csv | docker exec -i hoge-mysql  /bin/cp /dev/stdin /tmp/huga-data.csv
LOAD DATA INFILE `/tmp/huga-data.csv`
INTO TABLE `huga`
FIELDS TERMINATED BY ',' ENCLOSED BY '"'

Docker tips

02:11

今回利用したコマンド 一覧

  • 起動中のコンテナ
$ docker ps
  • 全コンテナ
$ docker ps -a
  • コンテナを削除
$ docker rm -f name
  • イメージを削除
$ docker rmi -f name:tag
$ docker exec -it name bash
  • コマンドを実行する
$ docker exec -i name コマンド
  • コンテナのログを確認する
$ docker logs name
  • コンテナを終了する時 削除も行う
$ docker run --rm --name name image-name

2013-08-19

whenever備忘録

23:56

git whenever https://github.com/javan/whenever

cron update

whenever -i -f config/schedule.rb 

2013-06-21

vpnで繋ぎながらvmをssh接続する時の設定

00:59

vpnで接続するとVMsshログインできなくなる。

VirtualBoxでは絶対座標指定のデバイスを有効化にチェックを入れるとsshログインできる

ファイルディスクリプタ

00:57

プロセスとそのプロセスが利用する入出力先を紐付けているインターフェース整数値。

0 : stdin(標準入力)

1 : stdount(標準出力)

2 : stderr(標準エラー)

fuktommyfuktommy 2013/06/22 14:26 別の手として route コマンドでVMへの経路を追加したら通った記憶が。

jotejote 2013/07/02 11:16 なんと。そちらのほうが納得できますね。
このやり方はどうも腑に落ちなかったので、routeのほうが正当っぽい。
ありがとうございますー!

2013-06-11

ruby1.9.3のインストールメモ

20:29

OS CentOS6.3 64bit

yum install gcc* compat-gcc* compat-lib*

yum groupinstall 'Development Libraries'

yum install zlib*

# wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz

# tar -zxvf yaml-0.1.4.tar.gz

# cd yaml-0.1.4

# ./configure

# make;make install

sudo yum install mysql-devel

gem update

  • mysql2 install

gem install mysql2

gem install rails -v 3.0

2013-01-18

ファイルディスクリプタ

12:52

プロセスとそのプロセスが利用する入出力先を紐付けているインターフェース整数値。

  • 0 : stdin(標準入力)
  • 1 : stdount(標準出力)
  • 2 : stderr(標準エラー)