落ちたDockerコンテナを再度立ち上げる

マシンを再起動したり意図せずコンテナが落ちた時は一からコンテナを作り必要はなく再度立ち上げる事ができる

docker restart hash

ちなみに落ちたコンテナはdocker ps -aで確認できます。

テスト用のDBコンテナで10GBくらいのデータが入っているコンテナのような場合は再度作り直すのも億劫なのでこれはよく使う。

大きなコンテンツをMySQLテーブルに格納する時はmax_allowed_packetに注意する

非常に長文のコンテンツを格納するカラムを含むレコードを追加していた時必ず同じ行でエラーとなっていた。中の文字列や他の要因によるものかと思っていたが、max_allowed_packetの設定であることがわかった。

MariaDB [example]> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+

現行このようになっているので、my.cnfに以上より大きい値を設定してから再起動します。

[mysqld]
max_allowed_packet = 16MB

再度実行するとこのようにmax_allowed_packetが変化し、大きなコンテンツのレコードでも問題が発生しませんでした。

MariaDB [example]> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+

参考
https://colo-ri.jp/develop/2011/01/mysql-image-save-checkpoints.html

MacにLuaをインストールする

brewでインストールが可能

brew install lua

インストールが完了すると以下のように確認できる

$ lua -v
Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio

この記事を書いている時点ではLua5.3.3が最新なので少し古いバージョンが入る。最新の5.3.3をインストールしたい場合は以下のようにする。

brew install homebrew/versions/lua53

通常のLuaはluaで、5.3はlua-5.3というコマンドで実行できるようになる。

$ lua-5.3
Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio

luarocksについてもluarocksluarocks-5.3という風に使えます。

Node.jsでコマンドラインの標準入力を受け取る

echo "hoge" | node hoge.jscat hoge.txt | node hoge.jsみたいなパイプで渡した値をNode.jsで受け取るには以下で良いようだ。

var hoge = require('fs').readFileSync('/dev/stdin', 'utf8');
console.log(hoge);

実行するとこうなる

$ cat hoge.txt | node hoge.js
aaaaaaa aaaaaaa
bbbbbbb bbbbbbb
ccccccc ccccccc

モバイルPCで開発を行う人のための開発用サーバー構築

Macbookで開発を行っているがメモリやCPUが足りなかったので、余っている高性能デスクトップを、開発用にセットアップして、モバイルPCから接続したりできるようにした時のメモ。

今回は何かとよく使うCentOS7でセットアップしていきます。

VMの作成

既存のWindows環境はそのまま活かしておきたいので、Virtualboxを使ってVMを作成します。まずVirtualboxはこちらからダウンロードしてインストール。
https://www.virtualbox.org/

CentOS7のイメージをこちらからダウンロード
https://www.centos.org/download/

続いて以下の手順でVMを作成していきます。

  1. Redhat系で仮想マシンを作成する
  2. ネットワークをブリッジアダプターを選択 (理由はこちら)
  3. ストレージでCentOS7ディスクイメージを選択する
  4. 最小構成でインストール

Macからの接続

WindowsのVMの仮想コンソールを直接操作するのは大変なのでMacから操作したい。今回最小構成で設定したところデフォルトでMacからSSH接続できるようになっていました。

ssh root@192.168.0.3

この段階で重い処理が発生するアプリケーションサーバーにしたり、Javaアプリケーションのコンパイルやテストをやらせたり、何かの計算をさせるような使い方ができると思います。

データベースの設定

データベースサーバーとして動作できるようにしておくと、ローカルのデータベースdockerコンテナでは容量が足りないケースや、開発時でもデータベース自体に一定の処理能力を求めるようなケースでとても役立ちます。

yum install mariadb
systemctl enable mariadb
systemctl start mariadb

mysqlコマンドでログインした後以下のようにrootのパスワードを設定します

update mysql.user set password=password('password') where user = 'root';
flush privileges;

この状態でmysqlにはlocalhostからパスワードをpasswordで以下のように接続できるようになると思います

mysql -u root -p

さらにMac上で起動しているdockerコンテナのアプリケーションから外部DBサーバーとして今回設定したデータベースに接続させたい場合、接続元の追加とfirewalldの設定が必要になります。このあたりについては以前まとめた以下の記事に詳しく書いているのでこちらを参照してください。
http://qiita.com/setouchi/items/0a8b968e20d52f178a22

他にいろいろ設定したら追記していきます。