Docker Compose (original) (raw)

この広告は、90日以上更新していないブログに表示しています。

Docker Composeとは、複数のコンテナを一括で効率的に操作できるツールです。 Docker Composeでは、あらかじめ用意した定義ファイル(compose.yml)に従い、複数のコンテナを一括で作成・起動します。 Docker だけでは、1度に1つずつのコンテナしか操作できません。

基本操作

◇イメージのビルド

docker-compose build

◇コンテナの作成と起動

docker-compose up -d

◇コンテナを停止・削除

docker-compose down

◇コンテナの一覧を表示

docker-compose ps

◇ログを表示

docker-compose logs

◇コンテナを作成してコマンド実行

docker-compose run <サービス> <コマンド>

◇起動中のコンテナにコマンド実行

docker-compose exec <サービス> <コマンド>

基本構成

. ├── Dockerfile ├── docker-compose.yml └── src     └── Gemfile

方向性:Ruby on Rails によるWebアプリケーション

初期設定

Dockerfile

ベースイメージ

FROM ruby:2.7

ENV RAILS_ENV=production

必要なライブラリのインストール & アップデート

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.lost
/etc/apt/sources.list.d/yarn.list
  && apt-get update -qq
  && apt-get install -y nodejs yarn

作業ディレクトリを決める

WORKDIR /app

ローカルのソースコード「./src」を、dockerの作業ディレクトリ「/app」へコピー

COPY ./src /app

Ruby関連のライブラリのインストール。gemファイルのインストール

RUN bundle config --local set path 'vendor/bundle'
  && bundle install

src/Gemfile

#railsのインストール source 'https://rubygems.org'

gem 'rails', '~> 6.1.0'

docker-compose.yml

version: '3' services:   db:     image: mysql:8.0     command: --default-authentication-plugin=mysql_native_password     volumes:       - ./src/db/mysql_data:/var/lib/mysql     environment:       MYSQL_ROOT_PASSWORD: password   web:     build: .     command: bundle exec rails s -p 3000 -b '0.0.0.0'     volumes:       - ./src:/app     ports:       - "3000:3000"     environment:       RAILS_ENV: development     depends_on:       - db

dbのvolumeが一つポイント。

ローカルの./src/db/mysql_dataを、docker側の/var/lib/mysql に同期させている、という意味になる。

これがないと、毎回コンテナを起動の度にdbを入れ直さなくてはならない。

コンテナの作成

docker-compose run web rails new . --force --database=mysql

こちらを実行すると、srcディレクトリに、Ruby on Railsフレームワーク一式がインストールされる。

(少し時間かかる)