LoginSignup
4
4

More than 5 years have passed since last update.

Dockerでrails開発環境を構築するShellScript

Last updated at Posted at 2018-11-19

はじめに

自動的にdockerのコンテナ上でrailsの開発環境を作ってくれるShellScriptを作成したのでメモがわりに投稿。

環境

  • Docker for mac
  • ruby 2.4.0
  • mysql 5.7 を使用。

Docker for macはインストール済みとする。

shellscript

docker_rails.sh
#!/bin/bash

echo "docker pull ruby:2.4.0"
docker pull ruby:2.4.0

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

echo "docker images"
docker images

# make Dockerfile
cat <<'EOF' > Dockerfile
FROM ruby:2.4.0
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN gem install bundler
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install
ENV APP_HOME /app_name
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME
EOF

# make Gemfile
cat <<'EOF' > Gemfile
source 'https://rubygems.org'
gem 'rails'
EOF

# make Gemfile.lock()
touch Gemfile.lock

# make docker-compose.yml
cat <<'EOF' > docker-compose.yml
version: '2'
services:
  db:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_name
    ports:
      - "3000:3000"
    depends_on:
      - db
EOF

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

# fix Gemfile
echo "fix Gemfile(uncoment mini_racer)"
cat Gemfile | sed "s/# gem 'mini_racer'/gem 'mini_racer'/" > __tmpfile__
cat __tmpfile__ > Gemfile
rm __tmpfile__

docker-compose build

# fix config/database.yml
echo "fix config/database.yml"
cat config/database.yml | sed 's/password:$/password: password/' | 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

上記のdocker_rails.shを他にファイルの無いディレクトリ上で実行する。

bash docker-rails.sh

しばらくしてターミナルで

* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

と表示されたらブラウザでlocalhost:3000にアクセスするとrails serverが立ち上がっているはずです。

スクリーンショット 2018-11-20 0.19.39.png

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4