参考にさせて頂いたページ
centos7にdockerをインストールする手順について
今日の環境
はじめに
WSLでdocker試したけど上手くいかなかったので、vagrantにdockerをインストールしてrailsの環境構築までしてみました。
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の最新バージョンをインストールしました。
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
すると思います。