LoginSignup
0
1

More than 3 years have passed since last update.

Ruby on Railsの環境が整うDockerfile

Last updated at Posted at 2021-03-26

安易。
MariaDBとかは他コンテナで建てるものとします。

Dockerfile

FROM node:lts-slim AS node
FROM ruby:3

COPY --from=node /opt/ /opt/
COPY --from=node /usr/local/lib/ /usr/local/lib/
COPY --from=node /usr/local/bin/ /usr/local/bin/

RUN apt update && apt upgrade -y && apt install -y g++

RUN gem install rails

ちょっと説明

マルチステージビルドする

NodeイメージからNodeインタプリタのあるディレクトリをごっそりを持ってくる。
Nodeの特定バージョンを入れようと思うとcurlでインストーラとってきて、スクリプト実行して、必要ならyarnを別で入れるなどちょっとめんどくさい。
でもマルチステージビルドならDocker Official ImageのNodeインタプリタを拾えるし、バージョン指定はイメージのタグを変えればいいだけなのでちょっと楽。

# Nodeインタプリタをとってくるイメージ
FROM node:lts-slim AS node

# 最後に書いたFROMがイメージのベースになる
FROM ruby:3

# インタプリタの含まれるディレクトリをコピー
COPY --from=node /opt/ /opt/
COPY --from=node /usr/local/lib/ /usr/local/lib/
COPY --from=node /usr/local/bin/ /usr/local/bin/

RUN apt update && apt upgrade -y && apt install -y vim g++ # <- Nodeの駆動にg++が必要

参考: Multi-stage build でNode.jsのインストールをちょっぴり効率化する - アクトインディ開発者ブログ

railsのインストール

グローバルにインストール。
あとはdocker run -it <image name> bashとかしてコンテナ内でrails new appとかすると準備完了。

RUN gem install rails
0
1
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
1