普段、プロジェクト毎に vurtualbox で環境構築していたけど、そろそろ docker にしようかなと思ったのでやってみる。 docker いれて mysql と rails が使えるようにするところまで。
参考
- Docker Compose と Rails(+MySQL) で開発環境作成したときに気になったポイント - Qiita
- クイックスタート・ガイド:Docker Compose と Rails — Docker-docs-ja 17.06.Beta ドキュメント
docker for mac をインストールする
Docker Store から stable をダウンロードしてきてインストール。らくちん。
ruby と mysql のイメージを取得
$ docker pull ruby:2.4.2 $ docker pull mysql:5.7 $ mkdir -p ~/Project/app01; cd $_
以降、 ~/Project/app01
での作業です。
Gemfile
$ cat << _EOS_ > Gemfile # frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } gem "rails" _EOS_ $ touch Gemfile.lock
色々ディレクトリ作る
$ mkdir -p ../data/mysql # mysqlのデータ置き場 $ mkdir -p docker/mysql # mysql の接続パスワードはここに置く $ mkdir -p docker/rails # Dockerfile はここに置く
Dockerfile
$ cat << _EOS_ > docker/rails/Dockerfile FROM ruby:2.4.2 ENV LANG C.UTF-8 RUN apt-get update -qq RUN apt-get install -y build-essential nodejs RUN apt-get install -y mysql-client RUN mkdir /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile ADD Gemfile.lock /myapp/Gemfile.lock RUN bundle install ADD . /myapp _EOS_
docker-compose.yml
$ cat << _EOS_ > docker-compose.yml version: '2' services: db: image: mysql:5.7 ports: - "3306:3306" volumes: - ../data/mysql/volumes:/var/lib/mysql extends: file: ./docker/mysql/password.yml service: password web: build: context: . dockerfile: ./docker/rails/Dockerfile command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: - "3000:3000" volumes: - .:/myapp environment: RAILS_ENV: development extends: file: ./docker/mysql/password.yml service: password depends_on: - db _EOS_
password.yml
$ cat << _EOS_ > docker/mysql/password.yml version: '2' services: password: environment: MYSQL_ROOT_PASSWORD: password _EOS_
起動まで
$ docker-compose run --rm web rails new . --force --database=mysql --skip-bundle $ docker-compose build $ docker-compose up -d
で、mac から localhost:3000 でアクセスすると…できたー!
これから docker が好きになれそうな予感