Amazon Linux 2023 の Docker イメージで Rails を立ち上げる

AWS EC2 で Rails を立ち上げる機会があったのだが、Amazon Linux 2023 を使ってみたら、さっとできなかった。
(聞き及んではいたが、)Amazon Linux 2 と同じ感覚で触ってはいけないらしい。

Amazon Linux 2023 は、Docker イメージが公式から配布されている。
こちらをつかって、とりあえずRails が立ち上がるところまで持っていってみる。

参考

設定記述

今回、ruby の導入には、asdf を使ってみます。
(anyenv 経由の rbenv の導入が、コンテナの再起動都度消えてしまい。維持できなかったため。)

Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FROM amazonlinux:2023.1.20230809.0

WORKDIR /usr/src/app

RUN dnf update -y &&\
dnf install -y nano git which tar gcc rust patch make bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel &&\
rm -rf /var/cache/dnf &&\
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0

RUN . "$HOME/.asdf/asdf.sh" &&\
asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git &&\
asdf install ruby 3.2.2 &&\
asdf global ruby 3.2.2

ENV PATH /root/.asdf/shims:/root/.asdf/bin:$PATH

EXPOSE 3000
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3"
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "127.0.0.1:3000:3000"
volumes:
- .:/usr/src/app:cached
- bundle:/usr/src/app/vendor/bundle
- /usr/src/app/tmp
- /usr/src/app/log
- /usr/src/app/.git
environment:
BINDING: 0.0.0.0
BUNDLE_PATH: /usr/src/app/vendor/bundle
tty: true

volumes:
bundle:
driver: local

使ってみる

1
2
3
4
5
6
7
8
9
$ docker compose up -d
$ docker compose exec app bash
bash-5.2# bundle init
# # gem "rails"
# のコメントアウトを削除
bash-5.2# bundle install
bash-5.2# bundle exec rails new .
# => Y
bash-5.2# bundle exec rails s

localhost:3000 にアクセスして、Rails の初期画面が出るのでOK。


Amazon Linux 2023 の Docker イメージを使ってRailsを立ち上げた。
Rails 起動に必要な準備は掴めたので、次は本題の AWS EC2 上の Amazon Linux 2023 でのRails 起動にチャレンジしてみる。

では。