質問編集履歴

1 環境追加

Tatsuo_Iriyama

Tatsuo_Iriyama score 50

2019/01/17 17:53  投稿

Docker ✖️ Ruby on Railsの開発環境構築でブラウザ表示が出来ない
##現状
`localhost:3000`にアクセスできない。
![イメージ説明](8ab94f25d55f57709fbb1f89d25b3c69.png)
##開発環境
macOS High Sierra
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin17]  
Bundler version 2.0.1  
##構築手順
###1. Dockerのインストール(https://docs.docker.com/docker-for-mac/install/)
###2. RubyとMySQLのDockerイメージをダウンロード
```
$ docker pull mysql:5.7
$ docker pull ruby:2.6.0
```
###3. Dockerfile作成
```
FROM ruby:2.6.0
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 /first-web-app
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME
```
###4. Gemfile作成
```
source 'https://rubygems.org'
gem 'rails'
```
###5. 空のGemfile.lock作成
```
$ touch Gemfile.lock
```
###6. docker-compose.yml作成
```
version: '2'
services:
 web:
   build: .
   command: bundle exec rails s -p 3000 -b '0.0.0.0'
   volumes:
     - .:/app_name
   ports:
     - "3000:3000"
   depends_on:
     - db
 db:
   image: mysql:5.7
   environment:
     - MYSQL_ROOT_PASSWORD=password
```
###7. コンテナにRailsアプリ作成
```
$ docker-compose run web rails new . --force --database=mysql --skip-bundle
```
###8. Gemfileの変更
```ruby
# 追記 or コメントアウト
gem 'therubyracer', platforms: :ruby
```
###9. build
```
$ docker-compose build
```
###10. database.ymlの設定
```
default: &default
 adapter: mysql2
 encoding: utf8
 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
 username: root
 password: password
 host: db
development:
 <<: *default
 database: first-web-app_development
test:
 <<: *default
 database: first-web-app_test
production:
 <<: *default
 database: first-web-app_production
 username: first-web-app
 password: <%= ENV['FIRST-WEB-APP_DATABASE_PASSWORD'] %>
```
###11. コンテナの実行
```
$ docker-compose up
```
###12. ブラウザ確認
##ログ
```
$ docker-compose up
Starting first-web-app_db_1 ... done
Recreating first-web-app_web_1 ... done
Attaching to first-web-app_db_1, first-web-app_web_1
db_1  | 2019-01-17T00:51:49.477568Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
db_1  | 2019-01-17T00:51:49.478825Z 0 [Note] mysqld (mysqld 5.7.24) starting as process 1 ...
web_1 | A server is already running. Check /first-web-app/tmp/pids/server.pid.
web_1 | => Booting Puma
web_1 | => Rails 5.2.2 application starting in development
web_1 | => Run `rails server -h` for more startup options
web_1 | Exiting
first-web-app_web_1 exited with code 1
```
##質問
- どうすればブラウザアクセスができるようになるでしょうか?
  • Ruby

    13745 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • MacOS(OSX)

    3368 questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • Ruby on Rails

    14206 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Docker

    2028 questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

  • docker-compose

    597 questions

    docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る