はじめに
はじめまして、fuqdaです。
今回はローカル開発環境での開発しかないDocker初心者の自分が
Dockerを使ってRailsの動作環境を作ってみようと思います。
なお本稿はDockerの詳しい解説よりもDockerに興味のある
自分のような初心者の方が動かせるようになるところをゴールに進めてます。
前提
- Macユーザーの方
- Docker ToolboxというDockerを扱えるものが他にありますがそちらは使いません。
対象者
- Dockerに興味あるけど触れたことないDocker初心者の方
- Ruby on Railsを触ったことがある方
今回やること
今回やらないこと
- Dockerそのものの詳細な説明
- RubyやRuby on Rails自体の説明
Docker for Macのインストール
MacでDockerを動かすために今回はDockerを作っている
Docker社純正のDocker for Macを使います。
まず公式サイトからダウンロードしましょう。
DockerでHello,worldしてみる
Docker for Macがインストール出来たら、Dockerを介してHello,worldをターミナル上に表示してみましょう。以下のコマンドをターミナルで実行してみます。
$ docker run hello-world
実行結果
$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:9db522fd99adf8b84fc170fff8fde07d3b31194ecaf86141350a264fdcf5bccc Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
ちょこっと内容を解説
Hello from Docker!
が表示されていれば、Dockerが正常に動作していることになります。
docker run イメージ名
を指定することで今回指定した hello-world
というDockerイメージの中の Hello from Docker!
を表示されるコマンドが実行されました。
Dockerのイメージにどういったものがあるのかは各種イメージをホスティングするDocker Hubというサイト上で検索することが出来ます。
Dockerイメージを正確に表現出来ているのか分かりませんが、個人的にJavaScriptのnpmライブラリやgemのようなイメージで理解しています。
またターミナルには Unable to find image 'hello-world:latest' locally
と表示されていましたが、ローカルにコマンドの引数に指定したイメージがまだ無いということを示しています。
ローカルの実行環境にまだそのイメージが無い場合リモートのDockerイメージをホスティングしているDocker Hubに指定されたイメージを探しに行きます。今回はリモートにそのイメージが見つかったのでそれをローカルに落としてコマンドを実行した形になります。
エラー困った時マニュアル①
docker run イメージ名でリモートからイメージを取得出来ない
docker run hello-world
のようなリモートとつなぐdockerコマンドを実行した際に以下のようなエラーメッセージが出て、リモートのDocerイメージが取得出来ない場合があります。
$ docker run hello-world Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password. See 'docker run --help'.
リモートのDockerイメージの取得先にアクセス出来ていないということなので以下のコマンドでログインしましょう。ちなみにDocker HubやDocker for Mac上でログインしているように見えてもdockerコマンドの判定に関わるログインとは別ものなので注意です。
$ docker login Authenticating with existing credentials... Stored credentials invalid or expired Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username (登録したメールアドレス): 登録したユーザーネームを入力する Password: Docker Hubで登録したパスワードを入力する Login Succeeded
Docker Hubでのイメージの見つけ方
サイトトップの虫眼鏡のマークから検索出来ます。
「hello-world」というイメージが検索結果にヒットしました。
「hello-world」のイメージをクリックしてみると詳細を見ることが出来ます。
TAGSと書いてあるタブをクリックするとそのDockerイメージのバージョンなどのバリエーションをチェック出来ます。なおRubyのDockerイメージの場合も2.3.6
や2.5.1
などの様々なバージョンのイメージをTAGSから確認出来ます。
まずDockerとRailsアプリの準備をする
こちらの講座を参考にしました。 https://www.udemy.com/rails-kj/
なお、上記の講座はRuby(2.3.6)とRails(5.0系)とバージョンが古かったためRuby(2.5.1)とRails(5.2.2)にバージョンアップしました。 上記の講座のファイルを元にバージョンアップで起こるエラーを解消して実行したものが以下のリポジトリにあります。今回は以下のリポジトリを完成として手順を進めていこうと思います。
完成形 https://github.com/Shigeyuki-fukuda/Docker-Rails
手順①ディレクトリとファイルを準備する
# 開発用のワークスペースディレクトリがあるならその下で $ mkdir -p docker-rail; cd docker-rail # 以下は/docker-railsディレクトリ内 # Dockerfileとdocker-compose.ymlとGemfile、Gemfile.lockを作成する $ touch Dockerfile $ touch docker-compose.yml $ touch Gemfile $ touch Gemfile.lock
手順②ファイルを以下のように編集
Dockerfile
FROM ruby:2.5.1 RUN apt-get update -qq && apt-get install -y build-essential nodejs RUN mkdir /app WORKDIR /app COPY Gemfile /app/Gemfile COPY Gemfile.lock /app/Gemfile.lock RUN gem install bundler RUN bundle install COPY . /app
docker-compose.yml
version: '3' services: web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/app ports: - 3000:3000 depends_on: - db tty: true stdin_open: true db: image: mysql:5.7 volumes: - db-volume:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password volumes: db-volume:
Gemfile
source 'https://rubygems.org' gem 'rails'
Gemfile.lock
# 空でOK
Dockerを使ったRails環境をローカルに作成する
$ docker-compose run web rails new . --force --database=mysql
開発に使用する主なDockerコマンドを確認してみる
- 以降のコマンドは全て
docker-compose.yml
と同じディレクトリで実行する前提で行います。
docker-compose up -dコマンド
$ docker-compose up -d docker-rails_db_1 is up-to-date # docker-railsの部分はアプリケーション名に置き換えてください Creating docker-rails_web_1 ... done
コンテナの起動を確認するコマンド
docker-compose ps
$ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------ docker-rails_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp docker-rails_web_1 bundle exec rails s -p 300 ... Up 0.0.0.0:3000->3000/tcp
コンテナを停止するコマンド
docker-compose stop
$ docker-compose stop Stopping docker-rails_web_1 ... done Stopping docker-rails_db_1 ... done
コンテナを削除するコマンド
- 基本的に開発中は停止コマンドだけでOKですが削除したい場合は下記を実行しましょう。
$ docker-compose down Stopping docker-rails_db_1 ... done Removing docker-rails_web_run_279aba230fd4 ... done Removing docker-rails_web_1 ... done Removing docker-rails_web_run_b1f660570d0d ... done Removing docker-rails_db_1 ... done
開発環境のデータベースを作成するコマンド
docker-compose run コンテナのサービス名 bundle exec rails db:create
- ここでのコンテナ名はdocker-compose.ymlで指定したRubyを含むコンテナのサービス名を指定します。
- 自分の場合はdocker-compose.ymlのRubyを含むアプリケーション側のコンテナ名を
web
としたので、docker-compose run web bundle exec rails db:create
になります。
通常のローカル環境のようにサーバーにアクセスした際のアクセスログを確認したい場合のサーバー起動コマンド
docker-compose up
docker-compose up -d
の-d
オプションを付けないで実行した場合
$ docker-compose up Starting docker-rails_db_1 ... done Starting docker-rails_web_1 ... done Attaching to docker-rails_db_1, docker-rails_web_1 db_1 | 2019-01-02T01:37:41.619885Z 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-02T01:37:41.621948Z 0 [Note] mysqld (mysqld 5.7.24) starting as process 1 ... db_1 | 2019-01-02T01:37:41.625431Z 0 [Note] InnoDB: PUNCH HOLE support available db_1 | 2019-01-02T01:37:41.625489Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins db_1 | 2019-01-02T01:37:41.625515Z 0 [Note] InnoDB: Uses event mutexes db_1 | 2019-01-02T01:37:41.625530Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier db_1 | 2019-01-02T01:37:41.625542Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 db_1 | 2019-01-02T01:37:41.625557Z 0 [Note] InnoDB: Using Linux native AIO db_1 | 2019-01-02T01:37:41.625785Z 0 [Note] InnoDB: Number of pools: 1 db_1 | 2019-01-02T01:37:41.625928Z 0 [Note] InnoDB: Using CPU crc32 instructions db_1 | 2019-01-02T01:37:41.628651Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M db_1 | 2019-01-02T01:37:41.643307Z 0 [Note] InnoDB: Completed initialization of buffer pool db_1 | 2019-01-02T01:37:41.646290Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). db_1 | 2019-01-02T01:37:41.659044Z 0 [Note] InnoDB: Highest supported file format is Barracuda. db_1 | 2019-01-02T01:37:41.660430Z 0 [Note] InnoDB: Log scan progressed past the checkpoint lsn 12371209 db_1 | 2019-01-02T01:37:41.660487Z 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 12371218 db_1 | 2019-01-02T01:37:41.660505Z 0 [Note] InnoDB: Database was not shutdown normally! db_1 | 2019-01-02T01:37:41.660517Z 0 [Note] InnoDB: Starting crash recovery. db_1 | 2019-01-02T01:37:41.778166Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1" db_1 | 2019-01-02T01:37:41.778245Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables db_1 | 2019-01-02T01:37:41.778316Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... db_1 | 2019-01-02T01:37:41.808981Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. db_1 | 2019-01-02T01:37:41.809973Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. db_1 | 2019-01-02T01:37:41.809992Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. db_1 | 2019-01-02T01:37:41.810368Z 0 [Note] InnoDB: Waiting for purge to start db_1 | 2019-01-02T01:37:41.860636Z 0 [Note] InnoDB: 5.7.24 started; log sequence number 12371218 db_1 | 2019-01-02T01:37:41.860842Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool db_1 | 2019-01-02T01:37:41.861074Z 0 [Note] Plugin 'FEDERATED' is disabled. db_1 | 2019-01-02T01:37:41.862366Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190102 1:37:41 db_1 | 2019-01-02T01:37:41.864706Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them. db_1 | 2019-01-02T01:37:41.864890Z 0 [Warning] CA certificate ca.pem is self signed. db_1 | 2019-01-02T01:37:41.866588Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 db_1 | 2019-01-02T01:37:41.866629Z 0 [Note] IPv6 is available. db_1 | 2019-01-02T01:37:41.866650Z 0 [Note] - '::' resolves to '::'; db_1 | 2019-01-02T01:37:41.866672Z 0 [Note] Server socket created on IP: '::'. db_1 | 2019-01-02T01:37:41.870437Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. db_1 | 2019-01-02T01:37:41.871884Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871921Z 0 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871942Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871978Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871993Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.872017Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.882359Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.883166Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.895242Z 0 [Note] Event Scheduler: Loaded 0 events db_1 | 2019-01-02T01:37:41.895931Z 0 [Note] mysqld: ready for connections. db_1 | Version: '5.7.24' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) 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 | Puma starting in single mode... web_1 | * Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop
なお、-d
オプションなしで実行した場合には通常のrails s
の時と同様にctrl+c
でサーバーを停止出来ます。
エラー困った時マニュアル②
docker-compose upでサーバー起動したが、A server is already running. Check /app/tmp/pids/server.pid.
とエラーが出る
$ docker-compose up Starting docker-rails_db_1 ... done Starting docker-rails_web_1 ... done Attaching to docker-rails_db_1, docker-rails_web_1 db_1 | 2019-01-01T15:00:42.576652Z 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-01T15:00:42.578027Z 0 [Note] mysqld (mysqld 5.7.24) starting as process 1 ... db_1 | 2019-01-01T15:00:42.582392Z 0 [Note] InnoDB: PUNCH HOLE support available db_1 | 2019-01-01T15:00:42.582450Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins db_1 | 2019-01-01T15:00:42.582465Z 0 [Note] InnoDB: Uses event mutexes db_1 | 2019-01-01T15:00:42.582477Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier db_1 | 2019-01-01T15:00:42.582492Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 db_1 | 2019-01-01T15:00:42.582558Z 0 [Note] InnoDB: Using Linux native AIO db_1 | 2019-01-01T15:00:42.582778Z 0 [Note] InnoDB: Number of pools: 1 db_1 | 2019-01-01T15:00:42.582915Z 0 [Note] InnoDB: Using CPU crc32 instructions db_1 | 2019-01-01T15:00:42.584290Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M db_1 | 2019-01-01T15:00:42.593417Z 0 [Note] InnoDB: Completed initialization of buffer pool db_1 | 2019-01-01T15:00:42.595893Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). db_1 | 2019-01-01T15:00:42.607478Z 0 [Note] InnoDB: Highest supported file format is Barracuda. db_1 | 2019-01-01T15:00:42.618107Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables db_1 | 2019-01-01T15:00:42.618210Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... db_1 | 2019-01-01T15:00:42.652456Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. db_1 | 2019-01-01T15:00:42.653903Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. db_1 | 2019-01-01T15:00:42.653934Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. db_1 | 2019-01-01T15:00:42.654612Z 0 [Note] InnoDB: 5.7.24 started; log sequence number 12370866 db_1 | 2019-01-01T15:00:42.655658Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool db_1 | 2019-01-01T15:00:42.657771Z 0 [Note] Plugin 'FEDERATED' is disabled. db_1 | 2019-01-01T15:00:42.659046Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190101 15:00:42 db_1 | 2019-01-01T15:00:42.669586Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them. db_1 | 2019-01-01T15:00:42.669914Z 0 [Warning] CA certificate ca.pem is self signed. db_1 | 2019-01-01T15:00:42.672580Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 db_1 | 2019-01-01T15:00:42.672674Z 0 [Note] IPv6 is available. db_1 | 2019-01-01T15:00:42.672700Z 0 [Note] - '::' resolves to '::'; db_1 | 2019-01-01T15:00:42.672720Z 0 [Note] Server socket created on IP: '::'. db_1 | 2019-01-01T15:00:42.674987Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. db_1 | 2019-01-01T15:00:42.676201Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.676383Z 0 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.676446Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.676492Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.676511Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.676540Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.682399Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.682459Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-01T15:00:42.690773Z 0 [Note] Event Scheduler: Loaded 0 events db_1 | 2019-01-01T15:00:42.691047Z 0 [Note] mysqld: ready for connections. db_1 | Version: '5.7.24' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) web_1 | /usr/local/bundle/gems/activesupport-5.0.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated web_1 | /usr/local/bundle/gems/activesupport-5.0.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated web_1 | => Booting Puma web_1 | => Rails 5.0.0.1 application starting in development on http://0.0.0.0:3000 web_1 | => Run `rails server -h` for more startup options web_1 | /usr/local/bundle/gems/activesupport-5.0.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated web_1 | A server is already running. Check /app/tmp/pids/server.pid. web_1 | Exiting docker-rails_web_1 exited with code 1
以下のように事前にサーバーが起動していないことを確認しても、たまにプロセスが残っている場合にプロセスが残っているという先述のエラーが発生することがあります。
$ docker-compose ps Name Command State Ports ---------------------------------------------------------------------- docker-rails_db_1 docker-entrypoint.sh mysqld Exit 137 docker-rails_web_1 bundle exec rails s -p 300 ... Exit 137
そんな時はserver.pid
というサーバー起動時に作られるファイルを削除しましょう。
$ rm tmp/pids/server.pid
もう一度試して見ると
$ docker-compose up Starting docker-rails_db_1 ... done Starting docker-rails_web_1 ... done Attaching to docker-rails_db_1, docker-rails_web_1 db_1 | 2019-01-02T01:37:41.619885Z 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-02T01:37:41.621948Z 0 [Note] mysqld (mysqld 5.7.24) starting as process 1 ... db_1 | 2019-01-02T01:37:41.625431Z 0 [Note] InnoDB: PUNCH HOLE support available db_1 | 2019-01-02T01:37:41.625489Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins db_1 | 2019-01-02T01:37:41.625515Z 0 [Note] InnoDB: Uses event mutexes db_1 | 2019-01-02T01:37:41.625530Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier db_1 | 2019-01-02T01:37:41.625542Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 db_1 | 2019-01-02T01:37:41.625557Z 0 [Note] InnoDB: Using Linux native AIO db_1 | 2019-01-02T01:37:41.625785Z 0 [Note] InnoDB: Number of pools: 1 db_1 | 2019-01-02T01:37:41.625928Z 0 [Note] InnoDB: Using CPU crc32 instructions db_1 | 2019-01-02T01:37:41.628651Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M db_1 | 2019-01-02T01:37:41.643307Z 0 [Note] InnoDB: Completed initialization of buffer pool db_1 | 2019-01-02T01:37:41.646290Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). db_1 | 2019-01-02T01:37:41.659044Z 0 [Note] InnoDB: Highest supported file format is Barracuda. db_1 | 2019-01-02T01:37:41.660430Z 0 [Note] InnoDB: Log scan progressed past the checkpoint lsn 12371209 db_1 | 2019-01-02T01:37:41.660487Z 0 [Note] InnoDB: Doing recovery: scanned up to log sequence number 12371218 db_1 | 2019-01-02T01:37:41.660505Z 0 [Note] InnoDB: Database was not shutdown normally! db_1 | 2019-01-02T01:37:41.660517Z 0 [Note] InnoDB: Starting crash recovery. db_1 | 2019-01-02T01:37:41.778166Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1" db_1 | 2019-01-02T01:37:41.778245Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables db_1 | 2019-01-02T01:37:41.778316Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... db_1 | 2019-01-02T01:37:41.808981Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. db_1 | 2019-01-02T01:37:41.809973Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. db_1 | 2019-01-02T01:37:41.809992Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. db_1 | 2019-01-02T01:37:41.810368Z 0 [Note] InnoDB: Waiting for purge to start db_1 | 2019-01-02T01:37:41.860636Z 0 [Note] InnoDB: 5.7.24 started; log sequence number 12371218 db_1 | 2019-01-02T01:37:41.860842Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool db_1 | 2019-01-02T01:37:41.861074Z 0 [Note] Plugin 'FEDERATED' is disabled. db_1 | 2019-01-02T01:37:41.862366Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190102 1:37:41 db_1 | 2019-01-02T01:37:41.864706Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them. db_1 | 2019-01-02T01:37:41.864890Z 0 [Warning] CA certificate ca.pem is self signed. db_1 | 2019-01-02T01:37:41.866588Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 db_1 | 2019-01-02T01:37:41.866629Z 0 [Note] IPv6 is available. db_1 | 2019-01-02T01:37:41.866650Z 0 [Note] - '::' resolves to '::'; db_1 | 2019-01-02T01:37:41.866672Z 0 [Note] Server socket created on IP: '::'. db_1 | 2019-01-02T01:37:41.870437Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. db_1 | 2019-01-02T01:37:41.871884Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871921Z 0 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871942Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871978Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.871993Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.872017Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.882359Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.883166Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode. db_1 | 2019-01-02T01:37:41.895242Z 0 [Note] Event Scheduler: Loaded 0 events db_1 | 2019-01-02T01:37:41.895931Z 0 [Note] mysqld: ready for connections. db_1 | Version: '5.7.24' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) 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 | Puma starting in single mode... web_1 | * Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop
これでOKです。
開発環境URLにアクセスしてみる
先ほどの docker-compose up
コマンドを実行し、サーバーが起動した状態でlocalhost:3000
にアクセスしてみましょう。以下の画面が表示されれば成功です。