dockerでローカル環境にデータベースを立ち上げる
ずいぶん前に触ってからイマイチ使いどころが分からなかったdockerですが、
ECS (EC2 Container Service)も出たことなので思い出しついでのメモ。
boot2docker
ローカル環境はboot2docker
一択でしょうか。Windows版もあるみたいです。
Mac版で試します。brew install
で簡単に。
$ brew install boot2docker $ boot2docker init $ boot2docker up
boot2docker init
実行時に出力された値を環境変数に設定する必要があるので、
~/.bash_profile
にでも貼り付けておきます。
$ vi ~/.bash_profile (〜省略〜) export DOCKER_HOST=tcp://192.168.xxx.xxx:2376 export DOCKER_CERT_PATH=/Users/yustam/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1 $ source ~/.bash_profile
PostgreSQL
DockerHubよりPostgreSQLのイメージを起動。
$ docker run -it -e POSTGRES_PASSWORD=hogehoge -p 5432:5432 postgres
接続先はboot2docker ip
で取得した値のようです。
$ boot2docker ip 192.168.xxx.xxx $ psql -h 192.168.xxx.xxx -U postgres Password for user postgres: hogehoge psql (9.4.1) Type "help" for help. postgres=#
MongoDB
こちらも同じように書けます。DockerHubからMongoDBを起動。
$ docker run -it -p 27017:27017 mongo
$ mongo 192.168.xxx.xxx MongoDB shell version: 3.0.2 connecting to: 192.168.xxx.xxx/test > show dbs; local 0.078GB >
その他調べたこと
- この起動方法だと停止するとデータも消える(使い捨てテスト用?)
docker run
のオプション
省略形 | オプション | 意味 |
---|---|---|
-e | --env | コンテナの環境変数に値をセットする |
-p | --publish | コンテナの外から接続するためにポートを公開する |
-i | --interactive | 標準入力の有効化。Ctrl+C で停止できるようになる |
-t | --tty | 擬似コンソール?。-i と組み合わせて対話的に動作する |
-d | --detach | コンテナをバックグラウンドで動作させる |