2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Docker】docker-composeコマンド

Posted at

はじめに

Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。

docker-composeコマンドについて

複数のコンテナをまとめて起動するきや、オプションが重なりdocker runコマンドが長くなるときなどにdocker-composeコマンドを使用する。

docker-compose.ymldocker-composeコマンドを使用することで、複数のコマンドを簡単に起動する事ができる

docker-compose builddocker build <build contexts>に対応)

サービス(webやdb)のビルドを実行する。

build contextsdocker-compose.ymlに記載されているため、docker-compose buildのみでOK

$ docker-compose build

docker-compose updocker run <image>に対応)

コンテナを起動する。docker run実行時のオプションなどはdocker-compose.ymlに記載されているため、docker-compose upのみでOK。

docker-compose upbuildも同時に実行されるため、imgaeが作られていない場合はdockerfileを基にしてbuildする。

2回目以降はimageが既に存在しているため、buildは実行されずrunのみ実行される。

dockerfileを更新した場合は古いimagebuildされてしまうため注意が必要。その場合は--buildオプションをつけて実行する。

バックグラウンドで実行したい場合は-dオプションを付けて起動する。

$ docker-compose up

docker-compose psdocker psに対応)

docker-compose.ymlに記載されているコンテナの状態を確認する事ができる。

# docker-compose psの実行

$ docker-compose ps
	>
	         Name                       Command              State           Ports         
	---------------------------------------------------------------------------------------
	product-register-db-1    docker-entrypoint.sh postgres   Up      5432/tcp              
	product-register-web-1   irb                             Up      0.0.0.0:3000->3000/tcp

# docker psの実行

$ docker ps
	>
	CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                    NAMES
	4f12786c4d29   product-register_web   "irb"                    40 seconds ago   Up 39 seconds   0.0.0.0:3000->3000/tcp   product-register-web-1
	f0f4da422f87   postgres               "docker-entrypoint.s…"   40 seconds ago   Up 39 seconds   5432/tcp                 product-register-db-1

docker-compose exec <service> <command>docker exec <container> <command>に対応)

docker-compose実行時に、指定したサービス名のコンテナにコマンドを実行する事ができる。

# docker-compose execを実行
$ docker-compose exec web bash
	>
	root@4f12786c4d29:/product-register#

$ exit
	> コンテナを抜ける
	
# docker execの実行(再度コンテナに入る場合)
$ docker exce -it product-register-web-1 bash
	>
	root@4f12786c4d29:/product-register#

docker-compose up --build

--buildオプションをつけると、再度buildしてからrunする。

dockerfileに変更を加えた場合はimageを作り直す必要があるため、--buildオプションを付けて実行するとよい

$ docker-compose up --build

docker-compose down

コンテナをstopして削除する。一度リセットしてやり直したい場合などに実行する。

# docker-compose downを実行

$ docker-compose down

	>
	Stopping product-register-web-1 ... done
	Stopping product-register-db-1  ... done
	Removing product-register-web-1 ... done
	Removing product-register-db-1  ... done
	Removing network product-register_default

最後に

いかがでしたでしょうか。
今回はdocker-composeコマンドについてまとめてみました。
ここ違うよ!でしたり、こうした方がいいよ!などがあればコメントいただけると幸いです。

他にも下記のような記事を投稿しております。
興味がありましたら、ぜひご覧ください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?