もくじ
- もくじ
- Rubyが動くDockerを作りたい理由
- dockerのインストール
- 今回利用したOSやDockerのバージョン
- dockerイメージをダウンロード
- DockerfileとDockerイメージの作成
- Dockerイメージから起動
- ssh したい場合
- 次回
Rubyが動くDockerを作りたい理由
Rubyのバージョンをいじるためにrbenvとか使っている人も多いかと思いますが、そういうめんどくさいことを考えたくない。docker上で動かせばマシン自体の環境がどうだとかを意識する必要がない。
dockerのインストール
OSによって違います。僕の環境はMacなのでDocker for Mac的なやつをインストールしました。
今回利用したOSやDockerのバージョン
- macOS Sierra 10.12.6
- dockerのバージョンは以下
$ docker --version Docker version 17.12.0-ce, build c97c6d6
- Ruby 2.5.0
- Rails 5.1.5
dockerイメージをダウンロード
Ruby 2.5.0 がインストールされているイメージをダウンロードして、そこにRailsを入れていくという方法にします。
# イメージのダウンロード $ docker pull ruby:2.5.0 2.5.0: Pulling from library/ruby 3e731ddb7fc9: Pull complete 47cafa6a79d0: Pull complete 79fcf5a213c7: Pull complete 68e99216b7ad: Pull complete 4822563608bb: Pull complete 9d614f26bec1: Pull complete 1c758cfc0888: Pull complete 8a4fbc3666ca: Pull complete Digest: sha256:ed5fc221d5d03d89e1f8c1f7780b98bc708e68b4d8dba73594d017e999156619 Status: Downloaded newer image for ruby:2.5.0 # ダウンロードできたか確認 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ruby 2.5.0 bae0455cb2b9 3 weeks ago 869MB
DockerfileとDockerイメージの作成
FROM ruby:2.5.0 ENV LANG C.UTF-8 RUN apt-get update -qq RUN apt-get install -y build-essential libpq-dev nodejs RUN gem install bundler RUN gem install rails -v 5.1.5
- ruby:2.5.0 のイメージを使って
- aptのアップデートと必要なライブラリのインストールをして
- bundlerとrailsのインストールをする
といったところまでとりあえず記述。 このDockerfileをもとにdockerイメージを作成します。
$ docker build -t rails-515 . (略) Successfully built b70378b4f736 Successfully tagged rails-515:latest
docker build -t rails-515 .
これでdockerイメージができます。イメージの名前は rails-515
で、.
なのでカレントディレクトリの Dockerfile
をもとにdockerイメージが作成されます。イメージができたかどうか確認してみます。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE rails-515 latest b70378b4f736 9 minutes ago 960MB ruby 2.5.0 bae0455cb2b9 3 weeks ago 869MB
ということでdockerイメージができました。
Dockerイメージから起動
dockerイメージから起動してみます。
$ docker run -i -t rails-515 /bin/bash root@c1de73391dab:/#
docker run
でイメージから起動します。 -t rails-515
で rails-515 のイメージから起動。
-i
をつけた上で、 /bin/bash
を指定すると、イメージが起動したら docker に接続して bash は起動します。
rubyとrailsのバージョンを確認してみます。
root@c1de73391dab:/# ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux] root@c1de73391dab:/# rails -v Rails 5.1.5
Rubyは2.5.0、Railsは5.1.5がインストールされています。
ssh したい場合
このイメージを起動したあとsshします。
Dockerを起動します。
$ docker run -d -p -t rails-515 d523ccec7be43b815f590b1f4180f0c53001320305c79498dbaabf75ae1eec70
こんどは-i
じゃなくて -d
で起動します。これでdaemonとして起動します。
デーモンとして起動していることを確認します
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d523ccec7be4 rails-515 "irb" 4 seconds ago Up 7 seconds
ssh的に接続してみます。
$ docker exec -it a3bb697d197341f23ff3 /bin/bash root@a3bb697d1973:/#
これは、 a3bb697d197341f23ff3... のdockerでbashを起動しますという意味です。これでsshのような形になります。
停止方法
$ docker stop d523ccec7be43b815f590b1f4180f0c53001320305c79498dbaabf75ae1eec70 d523ccec7be43b815f590b1f4180f0c53001320305c79498dbaabf75ae1eec70 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
次回
次回はこの環境を使ってRailsアプリケーションを作っていくことを考えたいと思います。