参考にさせて頂いたページ
Vagrantのインストールについて
centos7にdockerをインストールする手順について
railsの環境構築について
今日の環境
- Windows10 Home
- VirtualBox-5.2.18
- Vagrant 2.1.4
- vagrant-centos-7.3.box
- Docker version 18.06.1-ce,
はじめに
WSLでdocker試したけど上手くいかなかったので、vagrantにdockerをインストールしてrailsの環境構築までしてみました。
VirtualBoxとVagrantをインストール
Vagrant久しぶりなので、新しいバージョンをインストールしなおしました。
以下のページを参考にさせていただきました。
Vagrant+Virtualboxを使いWindows10上にCentOS7.3+php7+MySQL5.7の環境を構築する - Qiita
適当に vagrant up
して、 vagrant ssh
するところまでやりました。
あとはVagrantに関してやったのはVagrantfileの以下行をコメントインしたぐらいです。
config.vm.network "private_network", ip: "192.168.33.10"
コンテナ内と同期するディレクトリを作成する
$ su パスワード入力(vagrant) # cd /var/ # mkdir www # chown root:vagrant www # exit $ cd /var/www/ $ mkdir rails_projects
dockerをインストール
以下のページを参考にさせていただきました。
CentOS7にDockerをインストールする - Qiita
vagrantの環境自体にはapacheなどのアプリケーションは入れていません。
yum -y update yum -y vim
してから、あとは参考ページにならってリポジトリの追加と、docker-ceの最新バージョンをインストールしました。
centosイメージをpullする
docker pull centos:7
Dockerfileを作成する
移動します。
cd /var/www/rails_projects
Dockerfileを作ります。
vim Dockerfile
以下の記述内容です。
FROM centos:7 MAINTAINER motomichi # set ruby version to be installed ENV ruby_ver="2.6.2" RUN yum -y update RUN yum -y install epel-release RUN yum -y install git make autoconf curl wget RUN yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel sqlite-devel bzip2 RUN yum clean all RUN yum -y install vim sudo # install ruby & bundler RUN git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv RUN git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build RUN echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile.d/rbenv.sh RUN echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh RUN echo 'eval "$(rbenv init --no-rehash -)"' >> /etc/profile.d/rbenv.sh RUN source /etc/profile.d/rbenv.sh; rbenv install ${ruby_ver}; rbenv global ${ruby_ver} RUN source /etc/profile.d/rbenv.sh; gem update --system; gem install bundler; gem install --no-ri --no-rdoc rails; # make workdir for rails projects RUN mkdir -p /work
上記したDockerfileはRUN source /etc/profile.d/rbenv.sh; gem update --system; gem install rails -v '5.1.2';
の方が良いかもしれない。
Dockerfileをもとにrailsがインストールされたdockerイメージを作成する
docker buildします。
motomichi/rails
の部分は任意のタグ名です。
docker build -t motomichi/rails ./
imageが作成されたか確認してみます。
docker images
以下のように表示されて、イメージが追加されたのがわかります。
REPOSITORY TAG IMAGE ID CREATED SIZE motomichi/rails latest 281f5fc96ae7 41 seconds ago 1.09GB centos 7 5182e96772bf 4 weeks ago 200MB
コンテナを作成して起動する
今のディレクトリを一応確認しておきます。
pwd
以下のように表示されました。
/var/www/rails-projects
さきほど作成したイメージからコンテナを作成して起動します。
docker run -i -d -p 8080:3000 -v "${PWD}:/work" --name 'rails' motomichi/rails
コンテナ一覧を確認します。
docker ps -a
以下のように表示されました。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 16e3a93c10d4 motomichi/rails "/bin/bash" 14 seconds ago Up 13 seconds 0.0.0.0:8080->3000/tcp rails
新しくRails projectを作成する場合
コンテナに入ります。
$ docker exec -it rails /bin/bash
コンテナ内でrails newします。
# cd /work # rails new project_1
gem 'mini_racer', platforms: :rubyの下あたりに gem 'therubyracer', platforms: :ruby
をGemfileに追記します。
ここはrailsのバージョンによって微妙に違います。
bundle installします。
# bundle install
railsします。
# rails s
コンテナを作成するときに、8080 => 3000 にしているので、
http://192.168.33.10:8080/ にアクセスするとrailsのスタートページが表示されるはず。
既にrails projectがある場合
何かGemfileとかあると思いますのでrails new
せずにbundle install
すると思います。