2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerを利用したRuby/Railsの開発環境の作り方

Last updated at Posted at 2023-09-13

もちろん、以下にMarkdown形式で記事を出力いたします。


Dockerを利用したRuby/Railsの開発環境の作り方

目次

  1. はじめに
  2. Dockerの基本
  3. Dockerfileの基礎
  4. Dockerfileの作成フロー
  5. Ruby/Railsの開発環境の構築
  6. 付録: 完成したDockerfile

Dockerを利用したRuby/Railsの開発環境の作り方

はじめに

Dockerのメリット

Dockerを使用する最大のメリットは、環境の再現性です。Dockerを使用することで、開発環境を短時間で構築でき、その環境を他のメンバーや環境で簡単に再現することが可能です。これにより、「私のマシンでは動くけど…」という問題が大幅に減少します。

この記事の対象読者

この記事は、RubyやRailsでの開発経験はあるものの、Dockerについては初心者で、その利用方法や設定に迷っている方を対象としています。

Dockerの基本

基本的な用語

  • イメージ (Image): イメージは、アプリケーションやサービスを実行するための静的なテンプレートであり、必要なファイルや依存関係をすべて含んでいます。一般に、Dockerfileからイメージをビルドします。

  • コンテナ (Container): コンテナは、イメージを実行中の状態、つまり動的なインスタンスです。コンテナは軽量で、迅速に起動でき、分離されているため他のコンテナとの干渉はありません。

  • Dockerfile: Dockerfileは、Dockerイメージを構築するためのスクリプトファイルです。このファイルには、ベースとなるイメージ、インストールするソフトウェア、実行するコマンドなど、イメージの作成に関する指示が書かれています。

  • ボリューム (Volume): ボリュームは、コンテナの外部でデータを保持するための仕組みで、コンテナが破棄されてもデータが残るように設計されています。これにより、コンテナ間でデータを共有したり、永続的なデータストレージとして使用することができます。

  • Docker Hub: Docker Hubは、Dockerイメージの公開リポジトリで、多くのオープンソースやコミュニティのイメージがホスティングされています。自分で作成したイメージを公開したり、他のユーザーが公開しているイメージを取得して使用することができます。

Dockerfileの基礎

Dockerfileは、Dockerイメージの作成手順を記述するためのファイルです。ここでは、基本的な命令や構文について詳しく見ていきましょう。

FROM

FROM ubuntu:latest

この命令は、ベースイメージを指定します。ここではubuntu:latestをベースイメージとして使用しています。

ENV

ENV RUBY_VERSION 2.7.6
ENV DEBIAN_FRONTEND=noninteractive
ENV TIMEZONE="Asia/Tokyo"

環境変数を設定します。上記の例では、後の命令で使用するRUBY_VERSIONやタイムゾーン、非対話型インターフェースを指定しています。

RUN

RUN apt-get update && apt-get install -y ...

RUN命令は、イメージの作成中にコマンドを実行します。この例では、Ubuntuのパッケージを更新し、必要なパッケージをインストールしています。

環境変数はアプリケーションの設定や動作を調整するための重要な要素です。ENVを使用して、これらの変数を設定できます。

Dockerfileの作成フロー

Dockerfileの作成は、実際の手作業のような逐次的なフローで行います。まず、ベースとなるイメージを選択し、その上で必要な設定やソフトウェアのインストールを行いながら、その都度Dockerfileを更新していきます。以下はその具体的な手順です。

  1. ベースイメージの選定: まず、ubuntu:latestのようなベースとなるイメージを選択してDockerfileに記述します。

    FROM ubuntu:latest
    
  2. イメージのビルド: 下記のコマンドを使用してDockerfileからイメージをビルドします。

    docker build -t myimage .
    
  3. コンテナの起動: ビルドしたイメージからコンテナを起動します。

    docker run -it --name mycontainer myimage /bin/bash
    

    これでコンテナ内のシェルに入ることができます。

  4. ソフトウェアのインストール: コンテナ内で、例えばnpmをインストールします。

    apt-get update
    apt-get install npm
    
  5. Dockerfileの更新: 上記の手順でインストールしたソフトウェアのコマンドをDockerfileに追記します。

    RUN apt-get update && apt-get install -y npm
    
  6. 再度イメージのビルドとコンテナの起動: 新しい設定やソフトウェアをDockerfileに追加した後は、再度イメージをビルドし、新しいコンテナを起動して動作を確認します。

このようなフローを繰り返すことで、RubyやRailsの開発に必要な環境を段階的に整えていくことができます。初めは手間がかかるかもしれませんが、このフローに慣れると、新しい環境の構築や既存の環境の更新が非常にスムーズに行えるようになります。

Ruby/Railsの開発環境の構築

ここでは、最終的に作成したDockerfileを使用して、Ruby/Railsの開発環境の構築手順を説明します。

rbenvとruby-buildのインストール

RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv && \
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && \
    echo 'eval "$(rbenv init -)"' >> ~/.bashrc && \
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build && \
    echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc && \
    . ~/.bashrc && \
    rbenv install $RUBY_VERSION && \
    rbenv global $RUBY_VERSION

上記のコードは、rbenvruby-buildをインストールし、設定して指定したRubyバージョンをインストールします。これにより、コンテナ内でRubyが利用できるようになります。

付録: 完成したDockerfile

以下は、この記事を通じて完成したDockerfileの内容です。このDockerfileを使用することで、Ruby/Railsの開発環境を効率的に構築することができます。

# ベースイメージとしての指定
FROM ubuntu:latest

# 環境変数の設定
ENV RUBY_VERSION 2.7.6
ENV DEBIAN_FRONTEND=noninteractive
ENV TIMEZONE="Asia/Tokyo"

# 必要なパッケージのインストールとタイムゾーンの設定
RUN apt-get update && \
    apt-get install -y \
    tzdata \
    curl \
    build-essential \
    default-libmysqlclient-dev \
    nodejs \
    npm \
    imagemagick && \
    ln -fs /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && \
    dpkg-reconfigure --frontend noninteractive tzdata && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* 

# Node.jsのパッケージをインストール
RUN npm install -g gulp-cli \
    bower \
    eslint \
    yarn \
    babel-eslint \
    eslint-plugin-angular

# rbenvとruby-buildのインストール、そしてRubyのインストール
RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv && \
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && \
    echo 'eval "$(rbenv init -)"' >> ~/.bashrc && \
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build && \
    echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc && \
    . ~/.bashrc && \
    rbenv install $RUBY_VERSION && \
    rbenv global $RUBY_VERSION

このDockerfileを自身のプロジェクトにコピーして、docker buildコマンドを使用してDockerイメージをビルドすることができます。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?