Docker挫折したマンを助けたい(docker-compose編)
どうも、エンジニアのミヤマです。
以前、Dockerの基本的な使い方のブログを書きました。
https://blog.anysense.co.jp/app/program/post-934/
https://blog.anysense.co.jp/app/program/post-948/
そして、今回はそれをより使いやすくするためのツール、docker-composeを紹介します。
docker-composeって?
以前紹介したDokcerのやり方は、Dockerのコマンドを直接打って、コンテナを実行するものでした。
でもDockerコマンドって毎回打つの、めんどくないですか?
そこでdocker-composeです。
さっそくやってみる、docker-compose
では、docker-composeをやっていきますが、インストールについては、よしなにお願いします。
んでんで、docker-composeというのは、dockerコマンドを簡単に管理してくれます。
このdocker-composeを使うためには、docker-composeとdocker-compose.ymlという名前をつけたファイルが必要になります。
まず、docker-compose.ymlには、こう書いておきます。
1 2 3 4 5 6 7 8 9 |
version: '3' services: web: build: context: . dockerfile: Dockerfile volumes: - ./hoge_volume:/home/hoge_volume |
このとき、docker-compose.ymlと同じレベルのディレクトリに、hoge_volumeというディレクトリを作っておいてください。
このdocker-composeの内容は、「Dockerfileをもとにイメージをビルドして、ボリュームとして./hoge_vouleをコンテナの/home/hoge_voumeにマウントする」という内容になっています。
次に、Dockerfileはこんな感じにしておきます。↓
1 2 3 4 5 6 |
FROM ubuntu:18.04 RUN apt-get update \ && apt-get install -y tzdata RUN apt-get install -y php CMD ["php","-S", "localhost:8000"] |
このDockerイメージでは、ubuntuのイメージをベースにして、phpをインストールして、そのなかでphpのビルトインサーバを起動する、という内容になっています。
そして、以上のファイルを保存したら、以下のコマンドを実行します。
1 2 3 4 5 6 7 |
// Dockerfileをもとに、dockerイメージを作ります(ビルドします) docker-compose build // そして、コンテナを起動します。 // -d オプションでコンテナをデーモンとして起動します。 docker-compose up -d |
そして、docker ps を実行するとdockerコンテナが実行されていることがわかります。
1 2 3 4 |
❯❯❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 59ab9ae0574d blog_docker_web "php -S localhost:80…" 22 minutes ago Up 22 minutes blog_docker_web_1 |
ついでに、hoge_volumeにテキトーにファイルを作って、本当にファイルがボリュームとしてコンテナにマウントされているかを確認してみます。
(hoge_volumeには、hoge.txtというのを作っておきます。)
1 2 3 4 5 6 7 |
❯❯❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 59ab9ae0574d blog_docker_web "php -S localhost:80…" 23 minutes ago Up 23 minutes blog_docker_web_1 ❯❯❯ docker exec -it blog_docker_web_1 bash root@59ab9ae0574d:/# ls home/hoge_volume/ hoge.txt |
確かに、hoge.txtが存在してますね。ボリュームマウントされてます。
docker-composeのメリット
ここまでやってきたことを整理すると、docker-composeをつかって、結果的にこうすることができました。
1 2 3 4 5 6 |
// このコマンドを↓ docker exec -it docker run -it -v hoge_volume:/home/hoge_volume ubnutu_php_example bash // こうすることができた↓ docke-compose up -d |
つまり、docker-composeのメリットは、↓
「Dockerコマンド的なものをdocker-compose.ymlに書いておくことで、docker-compose up -dだけで、
同じ環境を簡単に作りだすことができる。 」
です。
ここまでやれると、Dockerを結構理解できたのではないでしょうか?
といっても、ぼくはこれくらいのことしかできなかったりします。
と、こんなところで今回はこのへんで。
次回は、docker-composeを使って、wordpressのコンテナを作ってみます。