Docker Compose コマンド(まとめ)

2022/05/18

ここでは「Laravelローカル環境構築(Docker)」シリーズで構築したコンテナの立ち上げ手順について解説します。

毎回、プロジェクトの開発をはじめる際に、ルーチンワークとして実行するコマンドになります。

 

基本の流れ

 

1) カレントディレクトリの移動

基本的に docker-compose を使っているプロジェクトでアプリケーションの各コンテナを立ち上げる場合、まずは docker-compose.yml がどこにあるのかを確認します。

docker-compose.yml がどこにあるかわかったら、そのディレクトリに移動して docker-compose up -d で立ち上げることが出来ます。

ここでは 「DockerPractice」 がそのディレクトリだとします。


# ホームディレクトリ直下にある DockerPractice ディレクトリに移動
$ cd DockerPractice

 

 

2) ステータス確認

docker-compose ps でコンテナ一覧を表示します。


$ docker-compose ps

 

実演

 

3)起動

ディレクトリに移動して docker-compose up -d で立ち上げることが出来ます。

-d のオプションはデタッチド・モードと呼ばれ、バックグラウンド上でコンテナを立ち上げるモードです。

これをつけていないとログがダラダラと流れ出します。


# Dockerを起動
$ docker-compose up -d

# 起動しているコンテナが表示される
$ docker ps

 

実演

 

4)立ち上がっているコンテナの中に入る

立ち上がっているコンテナに入りたい場合は docker-compose exec を利用します。


# 構文
$ docker-compose exec サービス名 コマンド

# 実例
# チュートリアルでは laravel のサービス名は app になる
# artisanコマンドなど実行したい場合は以下
$ docker-compose exec app bash

# コンテナから抜けるときはexit
$ exit

サービス名は composer-compose.yml のファイルの中身を確認します。

 

実演


 

DB にアクセスしたい場合は、同様に exec コマンドを使って、MySQLコンテナに入ります。


# Mysqlコンテナに入る
$ docker-compose exec db bash

# MySQLにログイン
$ mysql -u root -p

# 接続を終了する場合
$ exit

 

実演

 

5)停止

アプリケーションの各コンテナを落とすには docker-compose down を利用します。

docker-compose stop というコマンドもありますが、こちらは立ち上げたコンテナを消さないで保持するコマンドです。こちらは基本的に使いません。

down の場合、立ち上げたコンテナを消してますが、コンテナを消しているだけでイメージは消していません。

# 停止かつコンテナ削除
$ docker-compose down

 

実演

 

Docker Composeにおける各種ファイルの変更時の反映について

docker-compose.yml変更を反映

・イメージ:再構築の必要なし
・コンテナ:再構築の必要あり:docker-compose up -d

 

Dockerfileの変更を反映

・イメージ:再構築の必要あり:docker-compose build
・コンテナ:再構築の必要あり:docker-compose up -d

【 Dockerfileの変更が反映されない 】
一度、 build ディレクトリで指定したものは、 docker-compose up -d したときに build はスキップされます。
 

 
Dockerfileに変更を加えたときは docker-compose build し直さないと反映されません。(※PHPの設定ファイル "php.ini" や Apacheの設定ファイル "000-default.conf" に変更を加えたときも同様)
 


$ docker-compose build
$ docker-compose up -d

# ワンライナーでもOK
$ docker-compose up -d --build

 

ミドルウェア等の設定変更を反映

・イメージ:再構築の必要あり:docker-compose build
・コンテナ:再構築の必要あり:docker-compose up -d

 

DockerコンテナにMySQLダンプのインポート

稼働しているサーバからダンプファイルを抽出します。


$ mysqldump -u ユーザ名 -pパスワード DB名 > dump.sql

 

ダンプしたファイルは docker-compose.yml と同じディレクトリに設置します。

 
以下、ダンプファイルをインポートするまでの手順です。


### Dockerコンテナにdumpファイルをコピー
# laravel_db → MySQLを動かすコンテナ
# コピー先はMySQLコンテナの /tmp/ 直下になる

# 構文
$ docker cp ローカルファイル MySQLコンテナ名:保存先のパス

# 例
$ docker cp dump.sql laravel_db:/tmp/dump.sql

### MySQLコンテナに入る + bash起動
$ docker-compose exec db bash

### インポート
root@123456789:/# mysql -u laravel_user -plaravel_pass laravel_db < /tmp/dump.sql

 

実演

 

Dockerコンテナ内でエラーログの確認(php-apache)

PHP 用の Apache イメージ(php-apache)でコンテナを作成した場合、Apache のエラーログ(/var/log/httpd/error_log もしくは /var/log/apache2/error_log)では確認できません。

PHPを単体でインストールした場合は以下のApacheのエラーログで確認できます。


[root@example ~]# cd /var/log/httpd
[root@example ~]# tail -f error_log

 

実演

以下の docker コマンドを打つとアクセスログは確認することができます。


# コンテナ名を確認
$ docker container ls

# アクセスログをリアルタイムに確認
$ docker-compose logs -f コンテナ名

 

実演

 
以上です。

 

自宅ではじめるDocker入門

Docker関連の数ある本でも、図や丁寧な解説で「わかりやすい」と評判がいい本です。コマンドを叩きながら、Dockerにおける「イメージ」「コンテナ」が理解できます。まだ、Kindle版が出てないのは惜しいですが、Docker入門としておススメの1冊です。

Amazonで詳細を見る

オススメ

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-チュートリアル, 環境構築