簡単に開発環境の構築ができるDockerを使用して、
Railsの開発環境を構築しようと思います。
目標としては、DockerをインストールからRailsで初期ページを
ブラウザで表示するところまでやってみようと思います。
作業するOSはWindow 10で行います。
構築する環境
Docker Toolboxのシステム要件として下記を満たしておく必要があります。
最初にDocker Toolbox on Windowsを下記のリンクよりインストールします。
リンク先の画面で「Get Docker Toolbox for Windows」ボタンをクリックします。
「DockerToolbox.exe」がDLできます。
次に「DockerToolbox.exe」よりインストールを開始します。
「Next」をクリックします。
次に、インストールするフォルダを選択します。
110MBが少なくとも必要です。
デフォルトのままで問題ないので「Next」をクリックします。
次にインストールするコンポーネントを選択します。
「Git」がインストールされていない場合は、最後の「Git for Windows」にチェックを入れます。
これらをインストールには少なくとも372.1MBの容量が必要です。
私の環境は「Git」はインストール済みなので、そのまま「Next」をクリックします。
次は、オプションの選択を行います。
「Install VirtuarlBox with NDIS5 driver[default NDIS6]」にチェックを入れます。
※デフォルトではチェックが入っていません。
最後にインストール内容の確認です。
問題なければ、「Install」をクリックします。
これで、Docker ToolBoxのインストールは終了です。
デスクトップに「Docker Quickstart Terminal」のショートカットが追加されているので、起動します。
下記が起動時のコンソールの結果になります。
Running pre-create checks... Creating machine... (default) Copying C:\Users\Admin\.docker\machine\cache\boot2docker.iso to C:\Users\Admin\.docker\machine\machines\default\boot2docker.iso... (default) Creating VirtualBox VM... (default) Creating SSH key... (default) Starting the VM... (default) Check network to re-create if needed... (default) Windows might ask for the permission to create a network adapter. Sometimes, such confirmation window is minimized in the taskbar. (default) Found a new host-only adapter: "VirtualBox Host-Only Ethernet Adapter #2" (default) Windows might ask for the permission to configure a network adapter. Sometimes, such confirmation window is minimized in the taskbar. (default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar. (default) Waiting for an IP... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with boot2docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: C:\Program Files\Docker Toolbox\docker-machine.exe env default ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ docker is configured to use the default machine with IP 192.168.99.100 For help getting started, check out the docs at https://docs.docker.com Start interactive shell Admin@Admin-PC MINGW64 /c/Program Files/Docker Toolbox $
ここから開発環境を構築していきます。
初めに、プロジェクト用のフォルダとして「workspace」を作成し、
その中にDockerfileを作成します。
DockerfileはDockerイメージを作成するための設定ファイルになります。
Dockerfile
# Rails FROM ruby:2.5 ENV LANG C.UTF-8 ENV APP_ROOT /usr/src/workspace WORKDIR $APP_ROOT RUN apt-get update -qq && apt-get install -y nodejs mysql-client sqlite3 COPY Gemfile $APP_ROOT COPY Gemfile.lock $APP_ROOT RUN bundle install COPY . $APP_ROOT EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"]
次に、rails用のGemfileを下記の内容でworkspaceに作成します。
Gemfile
source 'https://rubygems.org' gem 'rails', '~>5'
合わせて、Gemfile.lockも作成します。
下記のコマンドをworkspace フォルダで実行します。
touch Gemfile.lock
次に、各コンテナの設定を記載した、docker-compose.ymlをworkspaceに作成します。
ここでは、アプリケーションサーバーの「app」、DBサーバーの「db」の2つを定義します。
注意
MySqlの8系からは、認証の方法が変更になったみたいで、
command: --default-authentication-plugin=mysql_native_password
上記設定がないと、Rails側から接続できません。
docker-compose.yml
version: '3' services: db: image: mysql command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: 'pass' ports: - '3306:3306' volumes: - mysql-data:/var/lib/mysql app: build: . environment: RAILS_ENV: development volumes: - .:/usr/src/workspace links: - db ports: - "3000:3000" volumes: mysql-data: driver: local
ここまでの作業でworkspaceは下記の構成になっています。
Admin@Admin-PC MINGW64 ~/workspace $ ls docker-compose.yml Dockerfile Gemfile Gemfile.lock
次に、ホストOSとゲストOSのフォルダの共有設定を行います。
デスクトップに「Oracle VM VirtualBox」のショートカットがあるはずなので、
Oracle VM VirtualBoxマネージャーを起動します。 その後、「設定」をクリックします。
VM起動画面
VM設定画面
設定>共有フォルダーを確認します。
上記の画面キャプチャのようにパスの設定に?が入っているので、
いったん、対象の共有設定を削除します。
削除後に、画面右の「+」ボタンより設定を新規に追加します。
設定後、defaultの仮想マシンを再起動します。
パスの編集画面
修正後のパス確認
これまでの作成した設定ファイルより、各コンテナ、railsプロジェクトを作成します。
workspace上で下記のコマンドを実行します。
docker-compose run app rails new ./
上記実行後、workspaceにプロジェクトが作成されます。
作成後、MySqlへ接続するためのGemを 「Gemfile」 に追加します。
gem 'mysql2'
実行後
イメージを作成するために、下記コマンドを実行します。
docker-compose build
次に、下記のコマンドでコンテナを起動します。
docker-compose up
下記のURLにアクセスすると、初期ページが確認できるかと思います。
Rails起動確認