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

dockerとは何か

1台のサーバー上に、コンテナという複数のアプリケーション実行環境(開発環境)を構築でき、開発環境の共有や移転を簡単に行うことができるツールです。OSやハードウェアを問わずに実行できるため、Windows+Linuxのように、複数OSでアプリケーションの動作を確認したり共有したりする際にも適しています。
dockerを使用することで、動作の一貫性を保証することができ、環境構築における手間を大きく削減することが可能です。

使用したきっかけ

Railsチュートリアルに取り組むにあたって、codespaceというgithubを使用した開発環境で進めていましたが、より実践に近い、自分の力で開発環境を構築してみようと思ったからです。

環境構築方法

早速環境構築を行なっていきます。dockerはインストール済みであることが前提で進めるため、まだの方は以下からインストールを行なってください。

https://docs.docker.com/get-docker/?_gl=1*1w46cmq*_gcl_au*MTEzMTgyMjAyNy4xNzIxMDQ2Mjc5*_ga*NjY5OTQzMjM4LjE3MTk2NTk2ODM.*_ga_XJWPQMJYHQ*MTcyMTA0NjI3OS40LjEuMTcyMTA0NzEyNC40OS4wLjA.

1. ディレクトリ、ファイルの作成

ターミナル上で以下のコマンドを実行

ターミナル
mkdir myapp   /*作業用ディレクトリ名は任意*/
cd myapp
touch docker-compose.yml Dockerfile Gemfile Gemfile.lock

作成されたファイル

  • docker-compose.yml
  • Dockerfile
  • Gemfile
  • Gemfile.lock

2. 環境構築用のコードを記述

先ほど作成したファイルにコードを記述する。

docker-compose.yml
version: '3.9'
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 4000 -b '0.0.0.0'"
    stdin_open: true
    tty: true
    volumes:
      - .:/myapp
    ports:
      - "4000:4000"
    depends_on:
      - db
Dockerfile
FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

バージョンを指定し、必要なファイルのインストール、コンテナに作業ディレクトリのコピーなどを行なっている。

Gemfile
source 'https://rubygems.org'
gem 'rails', '~>7.0.3'
Gemfile.lock
/*こちらはGemfileの内容が入るため、空欄でOK*/

ターミナルで以下を実行
Ruby on Railsで開発するために必要なファイルが作成される。

ターミナル
docker-compose run web rails new . --force --database=postgresql

作成したdockerファイルの内容をもとにイメージ、コンテナが生成される。

ターミナル
docker compose build

config/database.ymlファイルにコードを追加

config/database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres  /*追加*/
  password: password /*追加、docker.compose.ymlに設定したパスワード(POSTGRES_PASSWORD)*/
  pool: 5 /*追加*/
ターミナル
docker compose up -d

サーバーが立ち上がり、docker.compose.ymlで指定したURL localhost:4000にアクセスすることができます。現在はデータベースを作成していないため、アクセスしようとするとエラーになります。
データベースを追加するために下記を実行してください。

ターミナル
docker-compose run web rails db:create
ターミナル
docker-compose run web rails db:migrate

再度localhost:4000のURLにアクセスすると、無事初期画面を表示できました!
Image from Gyazo

感想

環境構築をするだけなのに、ものすごく時間がかかりました・・・
これから学習する方の参考になれば幸いです。

参考

Docker + Rails7.1 の環境構築で詰まったポイント
dockerクイックスタートガイド
【Ruby on Rails7環境構築】Dockerでrails newする
【Rails】Dockerで環境構築をする方法

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