※雑メモです
はじめに
久しぶりです。私は相変わらずエンジニアをしています。ちなみにフロントエンドはReact + TypeScriptです。あとバックエンドもちょっと(rails)。私の現場のバックエンドがrailsなので、バックエンドについていろいろまとめようかなと。この記事では最初の肝である「環境構築」です。
※結構簡易的に書いてます。雑です。ご了承ください。
事前準備
Docker
公式サイトよりダウンロードしてください。
1.ディレクトリ作成
$ mkdir docker-rails-sample
$ cd docker-rails-sample
2.Dockerfile記述
FROM ruby:2.6.3
# 必要なパッケージのインストール
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs
RUN mkdir /docker-rails-sample
ENV APP_ROOT /docker-rails-sample
WORKDIR $APP_ROOT
ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock
RUN bundle install
ADD . $APP_ROOT
ここで以前、私が書いた記事でもあるのですが、Dockerのコマンドですが
- ENV ... 環境変数の設定
- WORKDIR ... ワーキングディレクトリの設定
- COPY ... ファイルをイメージにコピー
- RUN ... コマンド実行
3.Gemfileを作る
$ vi Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'
4.空のGemfile.lockを作る
rubymineで作業していたら勝手に作成された?のですが、docker-buildする際に必要なので。
Gemfile.lock
$ touch Gemfile.lock
5.docker-compose.ymlを作成
MYSQL_ROOT_PASSWORD
とMYSQL_DATABASE
を設定
(私はpasswordとかいうやばいパスワードで)
$ vi docker-compose.yml
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
- "3306:3306"
web:
build: .
command: rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app_name
ports:
- "3000:3000"
links:
- db
6.railsを実行
$ docker-compose run web rails new . --force --database=mysql
7.database.yml
passwordとhostを設定する。
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db
8.Docker起動
$ docker-compose build
$ docker-compose up
9.DB作成
$ docker-compose run web rails db:create
あとはlocalhost:3000にアクセスすればOK。
以上、雑メモでした。