docker-compose.ymlのサンプルファイル
code:docker-compose.yml
services: # 1: 作成するサービス(コンテナ)を定義する
db: # サービス名
image: mysql:5.7 # 2: 既存イメージでビルドする
volumes: # 4: コンテナ内のディレクトリをホストと共有する設定
# ボリューム名:コンテナ内ディレクトリ
# ややこしいが、ここで指定している名前はホストディレクトリではなく一番下で定義しているボリューム名を指している模様
- db_data:/var/lib/mysql
restart: always
environment: # 6: コンテナ内で利用可能な環境変数を設定する
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: your_database
MYSQL_USER: user_name
MYSQL_PASSWORD: user_password
web: # サービス名
build: ./rails_project # 3: ビルドに使用するDockerfileがあるディレクトリのパスを指定する
command: bundle exec rails s -p 3000 -b '0.0.0.0' # 9:
volumes: # 4: コンテナ内のディレクトリをホストと共有する設定
- .:/myapp # ホストディレクトリ:コンテナ内ディレクトリ
ports: # 7: ホストとコンテナのポートを繋ぐ設定。コンテナとその外部で通信を行う際に設定する。
- "3000:3000" # ホストのポート番号:コンテナのポート番号
depends_on: # 8: このサービスの起動前に事前に起動するサービスを指定する
- db
volumes: # 5: Dockerボリュームを定義する。ここで定義したものは、コンテナが削除されてもデータが消えない。
# ボリューム名
# 以下の定義方法だとコンテナを跨いだ共通ディレクトリとして機能しているが、コンテナの外部(ホスト側のディレクトリなど)とは接続されない
db_data:
関連