Rails-Tutorial用のDockerコンテナを1発で作るシェルスクリプト

こんにちは、えびじゅん(@ebijun1007)です。

本記事では、Dockerを使ってRails-Tutorial用の環境を作っていきます。

インフラの知識がなくても大丈夫なように、実行するだけで全て整えてくれるシェルスクリプトにしています。

 

 

Rails-Tutorial用のDockerコンテナを1発で作るシェルスクリプト

 

Rails 6 + MySQL on Dockerの環境を秒速で構築する

上記ブログでは最新バージョンのRails6の環境構築をしています。

これを参考に、Rails-Tutorialに合わせてRails5の環境を構築するシェルスクリプトを作りました。

 

下記コマンドを参考に、適当なディレクトリにファイルを作成して実行してください。

作成したshファイル(例だとrails5-on-docker.sh)に、下記シェルスクリプトコピペして実行すると、rails環境が一通り作られます。

mkdir rails-tutorial
cd rails-tutorial
touch rails5-on-docker.sh
chmod 755 rails5-on-docker.sh

 

コンテナ起動後、初回のみ、mysqlのデータベース接続時にパスワードを聞かれるかもしれませんので、その際はrootもしくは自身で設定したパスワードを入力してください。

 

#!/bin/bash


echo "docker pull ruby:2.5.3"
docker pull ruby:2.5.3


echo "docker pull mysql:5.7"
docker pull mysql:5.7


echo "docker images"
docker images


# make Dockerfile
cat <<'EOF' > Dockerfile
FROM ruby:2.5.3
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs && rm -rf /var/lib/apt/lists/*
RUN gem install bundler
WORKDIR /tmp
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install
ENV APP_HOME /rails-tutorial
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
COPY . $APP_HOME
EOF


# make Gemfile
cat <<'EOF' > Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }


gem 'rails', '5.1.6'
EOF


# make Gemfile.lock()
touch Gemfile.lock


# make docker-compose.yml
cat <<'EOF' > docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=root
ports:
- "3306:3306"
web:
build: .
command: /bin/sh -c "rm -f /rails-tutorial/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/rails-tutorial
ports:
- "3000:3000"
links:
- db
tty: true
stdin_open: true
volumes:
mysql_data:
driver: local
EOF


echo "docker-compose run web rails new . --force --database=mysql --skip-bundle"
docker-compose run web rails new . _5.1.6_ first_app --force --database=mysql --skip-bundle


docker-compose build --no-cache


# fix config/database.yml
echo "fix config/database.yml"
cat config/database.yml | sed 's/password:$/password: root/' | sed 's/host: localhost/host: db/' > __tmpfile__
cat __tmpfile__ > config/database.yml
rm __tmpfile__


echo "docker-compose run web rake db:create"
docker-compose run web rake db:create


echo "docker-compose up"
docker-compose up

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください