目的
docker, docker-compose, rails を使って、HelloWorld を表示する。
環境
EC2 ubuntu
前提
・Vscode の Remote SSH を使う。
・3000 ポートのポートフォワーディングができている。
手順
(1)
~$ sudo apt update
~$ sudo apt install docker.io docker-compose
~$ sudo systemctl start docker
~$ sudo systemctl enable docker
~$ mkdir rails_api
vscode で rails_api フォルダに移動
~/rails_api$ docker-compose --version
~/rails_api$ sudo apt remove docker-compose
~/rails_api$ DOCKER_COMPOSE_VERSION=2.20.3
~/rails_api$ sudo curl -SL https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
~/rails_api$ sudo chmod +x /usr/local/bin/docker-compose
~/rails_api$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
~/rails_api$ docker-compose version
(2)
docker-compose
コマンドを実行するために、ubuntuユーザにdockerグループを割り当てる。
ただ、sudo をつければ実行できるので、必要ないかも。
~/rails_api$ groups
~/rails_api$ sudo usermod -aG docker $USER
~/rails_api$ newgrp docker
(3)
下記のように ~/rails_api
にファイルを作成。
# Dockerfile
FROM ruby:3.2
RUN apt-get update -qq && apt-get install -y nodejs
WORKDIR /my_app
COPY Gemfile Gemfile.lock ./
RUN gem install bundler && bundle install
COPY . .
docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/my_app
command: rails s -b 0.0.0.0
# Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 7.0.0'
Gemfile.lock
# 空で作成
(4)
~/rails_api$ docker-compose run --no-deps web rails new . --api --force
~/rails_api$ docker-compose run web bundle install
(5)
echo $USER
sudo chown -R $USER:$USER ./
下記のようにファイル作成
app/controllers/hello_controller.rb
class HelloController < ApplicationController
def index
render plain: "HelloWorld"
end
end
config/routes.rb
Rails.application.routes.draw do
get 'hello', to: 'hello#index'
end
(6)
ビルドして起動する。
~/rails_api$docker-compose build
~/rails_api$docker-compose up
(7)
http://localhost:3000/hello にアクセスする。