1
1

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 3 years have passed since last update.

M1MacでDocker(Ubuntu)+Rails6環境の構築手順メモ

Last updated at Posted at 2021-10-02

0. 概要

M1プロセッサ搭載のMacbook-Airを持っています。その環境に、Dockerを入れて、コンテナとしてUbuntuを構築して、Ubuntu上でrails6を構築しようとしました。すると、yarnのインストールを行う手順でメモリ違反が発生してインストールすることができませんでした。結果的にはUbuntuのバージョンを18.04ではなく、20.04をインストールことで対応できました。

1. 環境

machine : MacBook Air (M1, 2020)
OS : macOS BigSur Version 11.5.2

2. MacBook

2.1. docker インストール

  • docker公式ページ[https://hub.docker.com/editions/community/docker-ce-desktop-mac] の「Mac with Apple chipe」からダウンロードする。
  • ダウンロードした「docker.dmg」をダブルクリックする。
  • 画面に従い、dockerアイコンをアプリケーションフォルダに移動してインストールする。
toshihiroinoue@T21MacAir ~ % docker -v
Docker version 20.10.8, build 3967b7d

2.2. コンテナ インストール

  • Macのターミナルを起動する。
  • Ubuntu:21.04のイメージをダウンロードする。

rails6+M1プロセッサ+dockerで動かす場合、Ubuntuは21.04でないと動作しません。yarnのインストールを行うためのCurlやWgetでメモリ違反が発生するためです。

詳細は、Docker Desktop 3.4.0 release notes(https://docs.docker.com/desktop/mac/release-notes/)のKnown issuesに説明があります。

Known issues
On Apple Silicon in native arm64 containers, older versions of libssl in debian:buster, ubuntu:20.04 and centos:8 will segfault when connected to some TLS servers, for example curl https://dl.yarnpkg.com. The bug is fixed in newer versions of libssl in debian:bullseye, ubuntu:21.04 and fedora:35.

user@MacBook-Air ~ % docker pull ubuntu:21.04
  • イメージのダウンロード結果は以下となる。
user@MacBook-Air ~ % docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       21.04     8002c671f7fe   13 days ago   72.4MB
  • コンテナを作成する。
user@MacBook-Air ~ % docker run -it -d --name ubuntu ubuntu:21.04
  • コンテナが正常に動作していることを確認する。
user@MacBook-Air ~ % docker ps 
CONTAINER ID   IMAGE          COMMAND   CREATED        STATUS        PORTS     NAMES
ea99b2bc3338   ubuntu:21.04   "bash"    34 hours ago   Up 16 hours             ubuntu

3. ubuntu

3.1. ubuntu パッケージインストール

  • 個人的にほしいパッケージをインストールする。私がほしいだけなので、通常不要ではあるが、以降のコマンドがこれらが入っている前提になる。
root@ea99b2bc3338:~# apt-get update
root@ea99b2bc3338:~# apt-get upgrade
root@ea99b2bc3338:~# apt-get install aptitude vim
  • このあとのインストールに必要なパッケージをインストールする。
root@ea99b2bc3338:~# apt-get install git curl wget

3.2. rbenv インストール

  • rbenvのインストールに必要なパッケージをインストールする。
root@ea99b2bc3338:~# aptitude install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev
  • rbenvのリポジトリをクローンする。
root@ea99b2bc3338:~# git clone https://github.com/rbenv/rbenv.git ~/.rbenv
  • ruby-buildのリポジトリをクローンする。
root@ea99b2bc3338:~# git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
  • パスを通する。
root@ea99b2bc3338:~# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
  • rbenvを初期化する。
root@ea99b2bc3338:~# ~/.rbenv/bin/rbenv init
  • 設定を追加する。
root@ea99b2bc3338:~# echo 'eval "$(rbenv init -)"' >> ~/.bashrc
  • 設定を反映する。
root@ea99b2bc3338:~# source ~/.bashrc
  • インストールできるRubyのバージョンを確認する。
root@ea99b2bc3338:~# rbenv install -l
2.6.8
2.7.4
3.0.2
jruby-9.2.19.0
mruby-3.0.0
rbx-5.0
truffleruby-21.2.0.1
truffleruby+graalvm-21.2.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

3.3. ruby インストール

  • Rubyをインストールする。
root@ea99b2bc3338:~# rbenv install 2.7.4
  • ruby version 2.7.4をデフォルトのバージョンに指定する。
root@ea99b2bc3338:~# rbenv global 2.7.4
  • 確認する。
root@ea99b2bc3338:~# ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [aarch64-linux]

3.4. SQLite インストール

  • データベースとしてSQliteをインストールする。PostgreSQLやMySQLなどは任意で入れる。
root@ea99b2bc3338:~# aptitude install sqlite3

3.5. Node.js インストール

  • 最新のNode.jsをインストールする。
aptitude install nodejs sqlite3 npm
  • しかし、aptのNode.jsは古いため、 n packageを使って最新版をインストールする。
root@ea99b2bc3338:~# npm install -g n
root@ea99b2bc3338:~# sudo n stable
  • 不要なので最初に入れておいたnodejsとnpmは削除しておく。
root@ea99b2bc3338:~# apt remove -y nodejs npm
root@ea99b2bc3338:~# exec $SHELL -l
  • 最新バージョンがインストールできたことを確認する。
root@ea99b2bc3338:~# node -v
v14.17.6

3.6. Yarn インストール

  • Yarnをインストールする。公式サイトのコマンドをそのまま実行する。
root@ea99b2bc3338:~# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
root@ea99b2bc3338:~# echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

aptitude update && aptitude install yarn
  • バージョンが表示されれば成功となる。
root@ea99b2bc3338:~# yarn -v
1.22.5

3.7. rails インストール

  • 最後にRailsを入れる。
root@ea99b2bc3338:~# gem install rails
  • こちらも正しくインストールできているか確認する。
root@ea99b2bc3338:~# rails -v
Rails 6.1.4.1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?