Yak shaving logs


My life is just yak shaving.

[開発環境] Dockerを使ってRailsを動かす手順

2017/05/15 #rails #開発環境

railsの開発環境をdockerにするための手順です。

dockerをインストールする

brew cask install docker

docker用のワーキングディレクトリを作成

mkdir -p /Users/:user_name/docker && cd /Users/:user_name/docker

docker用のワーキングディレクトリにソースを持ってくる

git clone git@github.com:repository_name/your_app_name.git && cd your_app_name

dockerの設定ファイルを配置する

Dockerfile

vim Dockerfile

FROM ruby:2.3.1
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN gem install bundler
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install
ENV APP_HOME /your_app_name
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

docker-compose.yml

vim docker-compose.yml

version: '2'
services:
  db:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password
  web:
    build: .
    command: bundle exec rails server webrick -b 0.0.0.0 -p '3000'
    volumes:
      - .:/your_app_name
    ports:
      - "3000:3000"
    depends_on:
      - db

database.ymlを作成

vim config/database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: password
  host: db

development:
  <<: *default
  database: your_app_name_development

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: your_app_name_test<%= ENV['TEST_ENV_NUMBER'] %>

DBを作成する

docker-compose run web rake db:create
docker-compose run web rake db:migrate

コンテナのビルド

docker-compose build

  • gemのinstallなどがあるので時間がかかります

コンテナの立ち上げ

docker-compose up

動作確認

open http://localhost:3000/

FAQ

A server is already running. Check /yourappname/tmp/pids/server.pid. と言われました

  • (プロジェクトのルートディレクトリで) rm tmp/pids/server.pid
web_1  | => Booting WEBrick
web_1  | => Rails 4.2.4 application starting in development on http://0.0.0.0:3000
web_1  | => Run `rails server -h` for more startup options
web_1  | => Ctrl-C to shutdown server
web_1  | DEPRECATION WARNING: You are using the a deprecated processor interface #<Proc:0x005604f470b9b8@/usr/local/bundle/gems/autoprefixer-rails-6.3.7/lib/autoprefixer-rails/sprockets.rb:37>.
web_1  | Please update your processor interface:
web_1  | https://github.com/rails/sprockets/blob/master/guides/extending_sprockets.md#supporting-all-versions-of-sprockets-in-processors
web_1  |  (called from install at /usr/local/bundle/gems/autoprefixer-rails-6.3.7/lib/autoprefixer-rails/sprockets.rb:37)
web_1  | A server is already running. Check /your_app_name/tmp/pids/server.pid.

Bind for 0.0.0.0:3000 failed: port is already allocated と言われました

ERROR: for web  Cannot start service web: driver failed programming external connectivity on endpoint your_app_namesns_web_1 (4138c7febf2d304dee4c4bf88d7c072b5c19f839437835c69e14ad4689920919): Error starting userland proxy: Bind for 0.0.0.0:3000 failed: port is already allocated

実際に yourappname on docker で開発するための残課題


2017/08/01 追記:

  • [ ] Sequel Proを使えるようにする

Dockerで起動したmysqlコンテナにSequel Proで接続する方法について記載しました。

このエントリーをはてなブックマークに追加

categories


最新記事


tags