話題の仮想化環境であるdockerに触れてみました。
導入にあたり、助けていただいた勉強会&qiita
・2時間でマスターしちゃう Docker ECSハンズオン
・docker-composeでwordpress環境をサクッと構築する
目的
・dockerを用いてwordpress環境を作ることを目的とする。
・今後導入しやすいように「docker-compose」を作成する。
・dockerのコマンドについて覚える
インストール
公式のサイトからインストールする
●Mac用、windows用それぞれある。
※windowsの場合はwindows10proで無ければならない。(toolboxなどをさらにインストールしなければならずやや面倒くさいみたいです)
https://docs.docker.com
インストール後に正しく動いているのかの確認は下記のコマンドを実行
docker version
docker-compose作成
version: "2"
services:
wordpress:
image: wordpress:latest
volumes:
- "$PWD:/var/www/html"
- "$PWD/.docker/backup:/tmp/backup"
- "$PWD/.docker/log:/tmp/log"
ports:
- "8080:80"
depends_on:
- db
environment:
WORDPRESS_DB_HOST: "db:3306"
env_file: .env
db:
image: mysql:5.7
volumes:
- "db-data:/var/lib/mysql"
env_file: .env
volumes:
db-data:
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=admin
WORDPRESS_DB_PASSWORD=pass
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=admin
MYSQL_PASSWORD=pass
buildする
buildするディレクトリ(test3)を作成し、移動する。
mkdir test3
cd test3
ビルド実行
docker-compose up -d
local環境で画面確認
http://localhost:8080
wordpressのインストール画面が見えましたら、成功です。
各種コマンドについて
イメージの確認
docker images
稼働中のコンテナ一覧
docker ps
稼働中・稼働停止も含めたコンテナ一覧
docker ps -a
稼働コンテナの停止
docker stop [コンテナ名]
停止コンテナの稼働
docker start [コンテナ名]
コンテナの削除
docker rm [コンテナ名]
イメージの削除
docker rmi [イメージ名]
苦戦したところ、解らなかったところ
①8000:80が動かない
docker-compose.ymlファイルを作成するにあたり、wordpressのport番号を「- "8000:80"」にしたかったが、(port is already allocated) と出て起動させてくれなかった。練習でdockerを立ち上げていてすでに8000番を使っていたのだろうか、そうであれば8000番ポートを解除してちゃんと使えるようにしたいのだが、よくわからずでした。
しょうがなく「- "8080:80"」にしたら起動した。
②$PWDとは
「volume」がホスト側でファイルを操作するための設定であると聞きました。今回のdocker-compose.ymlファイルには下記のように記述しました。
volumes:
- "$PWD:/var/www/html"
- "$PWD/.docker/backup:/tmp/backup"
- "$PWD/.docker/log:/tmp/log"
・【$PWD】これはどのような意味なのか(省略文字なのか)?。
(/test3/という階層にwpファイル群が展開していったのでなんとなく意味はわかるが)
・下の二つの隠しフャイル展開しているものはどのように使えば良いのか(不要ならば消したい)
③ホスト側のdbの場所がわからない
dbでの「volume」でも下記のような設定をしました。
volumes:
- "db-data:/var/lib/mysql"
この設定をしたがファイル群を見ても「db-data」という階層が見当たらない、どこにdb情報が格納されているのかがわからない。
local環境で開発後にサーバーにデプロイするために、db情報がどこにあるかわからないのは致命的である。