Docker-compose.ymlの中身の詳細
Docker-compose.yml
version: '3'
#dbとwebのサービスを定義
services:
db: #msql
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password #認証形式の設定8.0から
volumes:
- ./src/db/mysql_data:/var/lib/mysql #./src/db/mysql_data(ローカル)を/var/lib/mysql(docker)側に共有する設定(コンテナを作り直すたびにデータが消えてしまうが、これを設定しておけばローカルのデータを持ってこれる)
environment:
MYSQL_ROOT_PASSWORD: password #(環境変数でパスワードを指定)
web: #rails
build: . #ベースのイメージとしてDocker fileを参照する設定
command: bundle exec rails s -p 3000 -b '0.0.0.0' #rails サーバーを起動
volumes:
- ./src:/app #./src(ローカル)内を/app(Docker)側に共有する
ports:
- "3000:3000" #ローカルの3000ポートをDockerの3000ポートに接続
depends_on: #webはdbサービスに依存しているという設定
- db
Docker-compose.ymlを作成したのでその中身の説明をメモしておく
Docker-compose.yml
services:
db:
web:
services:は今回のDocker-compose.ymlの大枠として
今回は db:とweb: の二つのサービスを入れた。
このdb:とweb:に設定を入れていく
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./src/db/mysql_data:/var/lib/mysql
./src/db/mysql_data(ローカル) を /var/lib/mysql(docker)側に共有する設定(コンテナを作り直すたびにデータが消えてしまうが、これを設定しておけばローカルのデータを持ってこれる)
environment:
MYSQL_ROOT_PASSWORD: password
環境変数でパスワードを指定
web:
build: .
ベースのイメージとしてDockerfileを参照する設定
command: bundle exec rails s -p 3000 -b '0.0.0.0'
rails サーバーを起動
volumes:
- ./src:/app
./src(ローカル)内を/app(Docker)側に共有する
ports:
- "3000:3000"
ローカルの3000ポートをDockerの3000ポートに接続
depends_on:
- db
webはdbサービスに依存しているという設定