Ruby on Rails 환경을 Docker로 구축하고 RubyMine으로 디버깅 (Mac Book Pro)

Ruby on Rails 환경을 Docker로 구축하고 RubyMine으로 디버깅 (Mac Book Pro)



재구축할 때를 위해 메모해 둡니다.
로컬을 별로 더럽히지 않고 구축할 수 있는 것이 장점입니다.
개발을 진행하는 동안 문제점이 나오면 업데이트 해 나가려고 생각합니다.

참고문헌


  • ぃ tp // 이 m / 따뜻한 / ms / 9f83573272f2 a 2754 a 76
  • ぃ tp // 코 m / 코즈키 / ms / 3 오 FC38C6C518 F2 A F3
  • ぃ tp // m / kmt / ms / 89c31d647bf42bf2300c
  • htp //포스트. 해 mpぃ에. jp/포 sts/114

  • Docker, RubyMine 설치



    Mac에 설치하는 것은, 이 2 종류만으로 OK입니다.
    설치 프로그램을 다운로드하여 실행합니다.

    Docker 설정, 실행


  • Dockerfile을 만들고 다음에 저장합니다. 위치는 선택적으로 OK입니다.
    /Users/hoge/dev/docker/test/Dockerfile

  • Dockerfile
    FROM ruby:2.3.3
    RUN apt-get update -qq && \
        apt-get install -y build-essential libpq-dev nodejs
    RUN mkdir /myapp
    WORKDIR /myapp
    ADD Gemfile .
    ADD Gemfile.lock .
    ENV BUNDLE_JOBS=4 \
        BUNDLE_PATH=/bundle
    RUN bundle install
    ADD . .
    
    
  • docker-compose.yml을 만들고 다음에 저장합니다. 위치는 Dockerfile과 같은 위치입니다.
    /Users/hoge/dev/docker/test/docker-compose.yml
    리모트 디버그 필요 없다고 하는 경우는 이하의 커멘드를 위쪽(#command:의 부분)으로 전환하면 Rails 서버가 통상 기동합니다.

  • docker-compose.yml
    version: '2'
    services:
      web:
        build: .
        #command: bundle exec rails s -p 3000 -b 0.0.0.0
        command: bundle exec rdebug-ide --port 1234 --dispatcher-port 26162 --host 0.0.0.0 -- bin/rails s -b 0.0.0.0 -p 3000
        container_name: web
        depends_on:
          - db
        ports:
          - "127.0.0.1:3000:3000"
          - "127.0.0.1:1234:1234"
          - "127.0.0.1:26162:26162"
        stdin_open: true
        tty: true
        volumes:
          - .:/myapp
        volumes_from:
          - bundle
      db:
        image: postgres
      bundle:
        image: busybox
        volumes:
          - /bundle
    
    
  • Gemfile을 만들고 다음에 저장합니다. 위치는 Dockerfile과 같은 위치입니다.
    /Users/hoge/dev/docker/test/Gemfile


  • Gemfile
    source 'https://rubygems.org'
    
    gem 'rails', '5.0.0.1'
    
    group :development, :test do
      # remote debug
      gem 'ruby-debug-ide'
      gem 'debase'
    end
    
  • Gemfile.lock을 만들고 다음에 저장합니다. 위치는 Dockerfile과 같은 위치입니다. 내용은 하늘에서 OK입니다.
    /Users/hoge/dev/docker/test/Gemfile.lock

  • Gemfile.lock
    
    
  • Dockerfile을 빌드합니다.
    ※ 이 이후의 명령은 『/Users/hoge/dev/docker/test』로 이동하여 실행합니다.
  • $ cd /Users/hoge/dev/docker/test
    
    $ docker-compose build
    
  • Rails 프로젝트를 생성합니다.
  • $ docker-compose run web rails new . --force --database=postgresql --skip-bundle
    
  • 데이터베이스 연결 설정을 구성합니다.
  • $ vi config/database.yml
    

    database.yml
    config=/opt/local/lib/postgresql84/bin/pg_config
    
    default: &default
      adapter: postgresql
      encoding: unicode
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
    
    development:
      <<: *default
      database: app_development
      username: postgres 
      host: db
    
    test:
      <<: *default
      database: app_test
    
    production:
      <<: *default
      database: app_production
      username: app
      password: <%= ENV['APP_DATABASE_PASSWORD'] %>
    
  • Gem을 설치합니다.
  • $ docker-compose run web bundle install
    
  • 데이터베이스를 작성합니다.
  • $ docker-compose run web rake db:create
    $ docker-compose run web rails generate scaffold user name:string age:integer
    $ docker-compose run web rake db:migrate
    
  • docker 컨테이너를 시작합니다.
    정지시킬 때는 'docker-compose down'이 아니라 'docker-compose stop'이 좋습니다.
  • $ docker-compose up
    

    RubyMine으로 원격 디버깅


  • 원격 및 로컬 폴더를 수정합니다.
    Remote root folder :/myapp
    로컬 루트 폴더 :/Users/hoge/dev/docker/test


  • 중단점을 지정한 후 벌레 버튼을 눌러 docker에 원격 디버그를 연결합니다. Rails 관련 Gem을 로컬에 설치하지 않으므로 자체 클래스의 디버깅 만 가능합니다. Rails 관련도 디버깅하고 싶다면 Gem을 로컬로 설치해야합니다.
    ★ Gem 설치 방법을 아래에 추가했습니다. ぃ tp // 코 m / 코지마 4 twt / ms / 32b15 a 50d0552172118 a
  • http://localhost:3000/users 을 브라우저에서 열어 디버깅을 시작합니다.
  • 좋은 웹페이지 즐겨찾기