はじめに
自分が書き留めていた記事を公開する
Docker compose
複数のコンテナをまとめて操作する
基本はこちらを使う
コマンド
docker-compose.yml
で管理しているコンテナに対して作用する
現在の階層のdocker-compose.yml
に対して行われる
無い場合は親の階層を探す
# imageを作成する
# DokerfileやGemfileを修正した際なども叩く
docker compose build
docker-compose build --no-cache
# コンテナの立ち上げ
# ymlで指定されたImageかDockerfileを利用して構築
docker compose up -d
docker compose up -d --build
# コンテナを停止&削除
docker compose down
# ymlで管理されたコンテナを全て再起動
docker compose restart
# 対象のymlで管理されたコンテナのみ一覧表示
docker compose ps
# ログを表示
docker compose logs [コンテナ名]
# ymlで管理されたサービスを1つ指定してコマンドを実行
# Imageの構築/コンテナ作成/コマンドの実行を1度で行う
docker compose run <サービス> <コマンド>
# 起動中のコンテナでコマンド実行 shellなどを使える
docker compose exec <サービス> <コマンド>
# dangling(宙ぶらりん)状態のImageを全て削除
docker image prune
# 起動中のコンテナ内部に入る
docker-compose exec サービス名 bash
docker -compose.yml
ymlファイルはスペースで親子関係を表現するファイル形式
設定ファイルでよく使われる
# versionとserviceを登録する
version: "3"
services:
web:
build: ./php # dockerfileの相対path
container_name: "php8"
ports:
- "8080:80"
db:
image: mariadb:10.4
container_name: "db2"
volumes:
- ./data:/var/lib/mysql # ホスト:Container ホストは相対pathがおすすめ
linux/amd64対応
platform: linux/amd64