Edited at

Windows10HomeだけどDockerで開発してもいいよね!!

More than 1 year has passed since last update.


はじめに

前回の「DockerでRuby on Railsの開発をしよう」という記事で、Windows10HomeでもDockerを使えると言う話をしたが、自分では試していなかったので挑戦してみた。

もし、Windows10ProやMacを使えるならこの記事は参考にならないかもしれない。


概要

WindowsでDockerを使用したいときは、ProでDocker for Windowsを使うことが推奨されている。

しかし、今回はDocker for Windowsの対象になっていないHomeでDockerを動かしたい。

そこで、"Docker-Toolbox"を用いてDockerを動かしていく。


環境構築

さくっとできる。


Dokcer-Toolboxの導入

まずDocker Toolbox overviewからDocker-Toolboxをダウンロードする。

次に、ダウンロードしたものをクリックしてインストールする。

インストールが終わると、次のようなショートカットが作られる。

画像の左側にある"Docker Quickstart Terminal"を起動する。

起動したら少し時間がかかるが上の画像のような画面になる。

赤線が引かれているIPは後々話に出てきます。

これで導入は完了した。


conemuで使う方法

Windowsでターミナルを触るならcomemuを使いたいくなる。

まだの人は、ここからダウンロードしよう。

ということで設定していく。

設定画面を開く。 setting > startup > tasks

task parametersには、開きたいディレクトリ(Workspase)を指定している。

commandsは、他の記事を参考にした。

task parameters:

/dir "C:\Program Files\Docker Toolbox"

commands:

"C:\Program Files\Git\bin\bash.exe" --login -i -new_console:C:"C:\Program Files\Docker Toolbox\docker-quickstart-terminal.ico" "C:\Program Files\Docker Toolbox\start.sh"

これでstartupをDockerにすれば設定は完了なので再起動したらちゃんと開くことができる。


実際に動かしてみる

今回は、Ruby on Railsを想定した話をする。

簡単に確認したいだけなら、定番の$ docker run hello-worldでわかる。


必要なファイルの準備

今回用意するのは、Dockerfiledocker-compose.ymlGemfileGemfile.lockの4つ。

ここから先の詳しい話は、前回の「DockerでRuby on Railsの開発をしよう」で説明している。


Dockerfile


Dockerfile

FROM ruby:2.5.1

ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y \
build-essential \
nodejs \
&& rm -rf /var/lib/apt/lists/*

RUN gem install bundler

WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install

ENV APP_HOME /myapp
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME



docker-compose.yml


docker-compose.yml

version: '3'

services:
web:
build: .
ports:
- "3000:3000"
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
- bundle:/usr/local/bundle
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
ports:
- '3306:3306'
volumes:
- mysql_data:/var/lib/mysql
volumes:
bundle:
mysql_data:



Gemfile


Gemfile

source 'https://rubygems.org'

gem 'rails', '5.2.0'



Gemfile.lock


Gemfile.lock

# 何も書かなくてよい



コマンドの実行

準備ができたので、Dockerを動かしていく。

$ docker-compose run web bundle exec rails new . --force --database=mysql --skip-bundle

これでRailsプロジェクトを作成できる。

次に、config/database.ymlのdefault部分を変更する。


config/database.yml


default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password  # docker-compose.ymlで設定したもの 今回は空白
host: db                           # docker-compose.ymlで設定サービス名


続いてここでコンテナの作成と起動を行う。

$ docker-compose build

$ docker-compose up -d

コンテナが動いているか確認。

$ docker ps

ちゃんと動いていれば大丈夫。


ブラウザで確認

恥ずかしながら、私はここで少し引っかかってしまった。

ブラウザで開くときは、DockerマシンのIPで開かないといけないので、コマンドで確認する。

$ docker-machine ip

192.168.99.100

これでわかったので、Webブラウザ(今回はGoogle Chrome)で開いてみる。

できた:relaxed:

画像だとRubyのバージョンが違うが、特に問題はない。


おわりに

新しい環境を作るのが面倒だと思う方は多いはず。

ただ、Dockerならサクッとできるので多くの人に使ってもらいたい。

質問があれば、コメントにお願いします。


参考

Windows10 HomeでDockerを使って簡単にTOPPERS/EV3RTのビルド環境を構築する

ConEmuからDocker Toolbox起動をする