この記事は、Docker超入門Part1の内容を要約・文字起こししたものです。(一部加筆、修正あり)
Dockerで開発環境を作ってみよう
Dockerとはなにか?を1行で説明すると、
vmwareやvirtualboxのような仮想マシンの技術とchefやansibleのような構成管理ツールを合わせたもの! です。
vmwareやvirtualboxは元になるOSのイメージがありますが、
dockerの場合元になるOSのイメージはdocker hubというところからとってこれます。↓
https://hub.docker.com/_/ruby/
上記はrubyのイメージです。
virtualboxだと、ubuntuをインストールしたイメージなどが配布されていますが、
docker hubはrubyをインストール済みのもやmysqlをインストール済みのものが配布されているので、
それらを使うことで初期設定で楽ができます。
色々あるから探してみてね!
railsのセットアップをしてみる
では、わかりやすい例としてRuby on Railsの環境設定をしてみます。
まず適当にフォルダを作ります。
mkdir rails
cd rails
まず、最初に作らないといけないファイルはDockerfileというものです。
FROM ruby:2.5.3-strech
FROMはどのOSイメージを使用するかの指定になります。
<イメージ名>:<タグ名>
で指定します。
今回の場合、ruby
がイメージ名、2.5.3-strech
がタグ名なので
上記のように書けばOKです。
次に、docker-compose.yaml
ファイルを作ります。
Dockerの場合、動かしているもの(OS)をコンテナ
と言うのですが
それをどうやって動かすかの設定をするファイルになります。
このファイルはどこかからテンプレート持ってきて書く場合の方が多いので、
だいたいこう書くんだなということが理解できればOKです。
version: "3"
services:
app: # コンテナ名なのでなんでもいい
build: . # これで同じフォルダのDockerfileが対象という意味。
volumes: # フォルダをコンテナにマウントします。(ファイル共有)
- "./app" # このフォルダを`/app`にマウントするという意味です。
ports: # ポートをバインドします。`ローカルポート`:`コンテナポート` と指定します。
- "3000:3000" # この場合、ローカルの3000ポートにアクセスした時に、コンテナの3000ポートにアクセスするの
tty: true # つけといてください
volumes
でローカルのフォルダをコンテナにマウントします。
これで、ローカルファイルをエディタで編集すれば、そのままrailsに反映されます。便利。
ports
でポートをバインドします。
コンテナは別のOSなので、ポートをバインドしてあげないと、ローカルから見えません。
これで設定は完了です。
では、dockerを動かします。
docker-compose up
コンテナに入ります。(sshで入るようなもの)
docker exec -it rails_app1 /bin/bash
動画内では↑を説明していますが、↓これの方がシンプル。
(docker-compose.yamlと同じフォルダで実行する必要あり)
docker-compose exec app bash
では、railsのセットアップをします。
cd /app
gem install rails
rails new .
# nodejsも必要なので。。
apt-get update
apt-get install nodejs
rails s -b 0.0.0.0
http://localhost:3000 にアクセスすれば、railsが立ち上がっているのが確認できると思います!
ね。簡単でしょ?
次回は、もうちょっと掘り下げて説明をしたいと思います。