docker composeつかいたいんだけど・・・
- docker-compose.ymlをつくります
- docker compose up -d を実行します
.ymlってなに?
ヤムルと言いますが、初めて見る人もいるかもしれません。ヤムルファイルには書き方があります。でもシンプルですので、すぐ使いこなすことができるようになるでしょう。
ヤムルファイルはkeyとvalueで成り立っています
key: value
key: value
key: value
実はたったこれだけなのです。かんたんですよね?
ヤムルファイルで使えるのは数字、文字、true/falseです。文字は’や”で囲んでも囲わなくてもOKですが、囲んでおいたほうが文字ですよとわかりやすいので囲んだほうが良いです。
version: 1.0
name: "my app"
start: false
version: 1.0
name: "my app"
start: false
version: 1.0 name: "my app" start: false
コレクション型もあります
ただただ改行してインデントするだけで、コレクション型を持てます。一つのkeyに複数のkey:valueを持つことが可能になります。
app_info:
version: 1.0
name: "my app"
start: false
app_info:
version: 1.0
name: "my app"
start: false
app_info: version: 1.0 name: "my app" start: false
インデントはタブではなくスペースです
タブは構文エラーになります、スペースでインデント(字下げ)してください。スペース2つでも4つでも良いですが、4つのほうが一般的です。
docker-compose.ymlの例
docker-compose.ymlはどういうふうにdockerコンテナを立ち上げるのかという指示書と思ってください。この例では、nginxとredisとmysqlが立ち上がる設定になっています。
version: '3'
services:
nginx:
image: nginx:latest
container_name: myapp-nginx
ports:
- 8080:80
redis:
image: redis:latest
container_name: myapp-redis
ports:
- 6379:6379
mysql:
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
container_name: myapp-mysql
ports:
- 3306:3306
environment:
MYSQL_DATABASE: myapp
MYSQL_ROOT_PASSWORD: secret
TZ: Asia/Tokyo
version: '3'
services:
nginx:
image: nginx:latest
container_name: myapp-nginx
ports:
- 8080:80
redis:
image: redis:latest
container_name: myapp-redis
ports:
- 6379:6379
mysql:
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
container_name: myapp-mysql
ports:
- 3306:3306
environment:
MYSQL_DATABASE: myapp
MYSQL_ROOT_PASSWORD: secret
TZ: Asia/Tokyo
version: '3' services: nginx: image: nginx:latest container_name: myapp-nginx ports: - 8080:80 redis: image: redis:latest container_name: myapp-redis ports: - 6379:6379 mysql: image: mysql:latest command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci container_name: myapp-mysql ports: - 3306:3306 environment: MYSQL_DATABASE: myapp MYSQL_ROOT_PASSWORD: secret TZ: Asia/Tokyo
docker-compose.ymlがあるところコマンド実行
ヤムルファイルがあるところでdocker compose up -dと実行するとdockerコンテナが次々立ち上がると思います。
どのdockerコンテナが起動してるのか調べたい
docker ps -a
docker ps -a
docker ps -a
どうもdockerの調子が悪い、リセットしたい
ただしこの方法はすべて何もかも削除されるのでご注意ください
docker system prune
docker system prune
docker system prune
dockerコンテナひとつだけ再起動したい
コンテナ名を調べるときはdocker ps -aしたときに出る一番右側の項目です。
docker restart コンテナ名
docker restart コンテナ名
docker restart コンテナ名
dockerコンテナが出力するログをみたい
dockerコンテナは通常ローカルファイルシステムにファイルを出力せずに、/dev/stdout /dev/stderrに出力します。このログを見るためにはlogsコマンドを使います。
docker logs コンテナ名
docker logs コンテナ名
docker logs コンテナ名
-fをつけるとログを流しっぱなしで見ることができます。
docker composeで起動したものを止める
docker compose down
docker compose down
docker compose down