search
LoginSignup
0

posted at

updated at

Docker-compose.ymlの中身の詳細

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サービスに依存しているという設定

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0