LoginSignup
3
3

More than 5 years have passed since last update.

開発環境をdocker-composeで作ってみた備忘録

Posted at

自分の備忘録なのでカスでしょうが
チラ裏です。

想定環境
Mac

必要ソフトウェア
Docker for Mac ※1
docker-sync ※2

フォルダ構成
local-dev //ルートディレクトリ基本的にdockerコマンドはここで実行する
├── amznlinux //APPサーバ用設定格納ディレクトリ
│ ├── Dockerfile //APP構築用dockerfile
│ ├── httpd //httpd設定マウント用ディレクトリ
│ │ ├── httpd.conf //この内容がhttpdの設定として読み込まれる
│ │ └── magic //現在の開発環境にあったので必要かはわからないが一応追加してる
│ ├── php //php設定マウント用ディレクトリ
│ │ └── php.ini //この内容がphp.iniとして読み込まれる
│ └── www //APPマウント用フォルダ(ここの内容がwwwへ直接マウント)作業用
├── docker-compose-dev.yml //docker-sync用設定ファイルdocker-syncを利用するため前準備設定
├── docker-compose.yml //docker-compose用ファイル docker-compose up --build時に読み込まれる
├── docker-sync.yml //docker-sync用設定ファイルdocker-sync-stack start時のマウント情報
├── mysql //DBサーバ用設定格納ディレクトリ
│ ├── Dockerfile //DBサーバ構築用dockerfile
│ ├── data_volume //DBデータ格納ディレクトリデータ永続化用
│ └── my //msyql設定マウント用ディレクトリ
│ └── my.cnf //この内容がmy.cnfとして読み込まれる
└── sharedata_mysql //コンテナへのデータ受け渡し用ディレクトリ(データ追加クエリとか)

導入の流れ
1、Docker for Macをインストール
http://paiza.hatenablog.com/entry/docker_for_mac
ここでもみながらテキトーに本当にインストールするだけです。

2、docker-syncをインストール
http://qiita.com/pocari/items/0340049742927f3a94b7
ここでもみながらテキトー(ry
Rubyなので環境がなかったらいれないとgemが使えなかった気がする
エラーがでたら頑張って処理!

3、terminalでdocker_localへcd
おもむろにdocker-compose up --build
5分位待ってるとこんな感じのログで止まったらコンテナ構築は一旦完了
mysql_1 | Version: '5.6.34' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
control + cでコンテナを一旦止める。

4、その場でdocker ps -aでコンテナが作成されているか確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
208********* localdev_amznlinux "/usr/sbin/apachectl " 4 hours ago Up 4 hours 0.0.0.0:80->80/tcp localdev_amznlinux_1
008********* localdev_mysql "docker-entrypoint.sh" 4 hours ago Up 4 hours 0.0.0.0:3306->3306/tcp localdev_mysql_1
ec7********* eugenmayer/rsync "/usr/local/bin/run" 4 days ago Up 4 hours 0.0.0.0:10***->873/tcp www
上の2つができてればbuildはOK(STATUSは動いてる時のだから違うよ)

5、この時データ追加用SQLなんかをsharedata_mysqlへ入れとくといいと思うよ。
mysqlに入って事前にデータ入れておきたいからログインしたいけどコンテナが動いてないと
execでログインできないからdocker-compose up -dでコンテナを立ち上げるよ

6、コンテナIDを使ってコンテナへログインするよ。
CONTAINER IDを使用するけど被ってなければ208とか頭の3桁指定すると問題ないよ
今回はmysqlへログインするからlocal-devディレクトリで docker exec -it 008 bashでログインするよ
ログインできたらsource コマンドを使ってsharedata_mysqlにあるsqlを実行しようね。

7、6のクエリの実行はなぜか途中で失敗することもあるから注意してね。
ほんでもって最後はいよいよsyncで立ち上げるよ。
でもそのまえにdocker-compose downでコンテナを一旦停止してね。

8、いよいよ立ち上げるよ
docker-sync-stack startを実行だ!
ログにまた↓が出るからそれがでたら立ち上げは完了だよ
mysql_1 | Version: '5.6.34' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)

9、ホストに127.0.0.1 domainnameを入れるのを忘れずにホストのhostsに設定してね

10、よし!後は野となれ山となれ!

MISSION CMPL RTB
Good Luck

用語解説
※1 dockerです。docker toolboxを利用することでvirtualboxへdocker machineを構築しそこでdockerコマンドを使う方法もありますが、今回はvirtualboxを使用せず、ローカルの仮想環境でdocker コンテナを実行できるdocker for macを対象とします。
参考URL: http://qiita.com/hshimo/items/e24b1fbfbf775ec7c941

※2 現在VMを使用しないdocker for macの場合ブラウザからの読込が非常に遅くなってしまう問題があり、原因はファイルシステムの監視方法だそうで、それを解決するものです。
参考URL: http://cluex-developers.hateblo.jp/entry/2016/11/02/122633

3
3
0

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
3
3