#はじめに
なお、本記事は以下のUdemy講座を元にした覚書です。
米国AI開発者がゼロから教えるDocker講座
#docker-composeを使うと良い時
- docker run コマンドが長くなるとき
- 複数のコンテナをまとめて起動するとき
#準備
docker-composeが入っているか確認します。(Dockerインストール時に一緒に入っていますが、念のため)
$ $ docker-compose --version
docker-compose version 1.27.4, build 40524192
バージョン情報が出なかった場合、インストールしてください。
Docker Compose のインストール
build contextを用意します。今回の構成は以下の通り。
biuldcontext
project-name
∟ docker-compose.yml
∟ Dockerfile
∟ その他
#docker runコマンドをdocker-copose.ymlに書いてみる
dockerコマンドの例
$ docker build .
$ docker run -d -it -v /Users/yukokanai/work/docker/project-name:/project-name -p 8888:8888 {image} bash
$ docker exec -it {コンテナ名}
これをdocker-compose.ymlに書いてみる
docker-compose.yml
version: '3'
services:
web:
build: . #buildから実施
ports: #-p ポートフォワーディング
- '8888:8888'
volumes: #-v hostディレクトリ(.)をコンテナディレクトリ(/project-name)にマウント
- '.:/project-name'
tty: true #-t ttyを割り当てます。
stdin_open: true #-i STDINを開きます。
実行
#buildcontextに移動
$ cd project-name
#imageがなければbuildとrunを行う(webサーバーとして使いたいので-d)
$ docker-compose up -d
#キャッシュimageを使いたくない場合は以下の様にする
#$ docker-compose up --build -d
# コンテナの中に入る(webはymlに書いたサービス名)
$ docker-compose exec web bash
終了
$ docker-compose down
#複数コンテナを作る場合
サンプル
docker-compose.yml
version: '3'
volumes:
db-data:
services:
web:
build: .
ports:
- '3000:3000'
volumes:
- '.:/my_product-register'
environment:
- 'POSTGRES_PASSWORD=postgres'
tty: true
stdin_open: true
depends_on:
- db
links:
- db
db:
image: postgres
volumes:
- 'db-data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_PASSWORD=postgres'