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 のフレームワーク一式がインストールされる。
(少し時間かかる)