0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自作RailsアプリをAWS上に開発する 〜ローカルのDocker上で起動したアプリにアクセスできるか検証〜

Posted at

1. 概要

Railsアプリの開発をローカル環境上で一通り終えたので、Dockerに慣れるためにローカル環境上にDockerコンテナを立てて、コンテナ上で稼働しているRailsアプリにローカル上からアクセスしてみる。

2. 用意するファイル

Dockerfile

Dockerfile
#ベースイメージとしてrubyを指定
FROM ruby:3.3.3

#作業ディレクトリの指定
WORKDIR /app

#アプリケーションコードがローカルのalcoholの配下にあるため、コンテナのapp配下にコピー
#alcoholはアプリ名
COPY alcohol /app

#コンテナ内にコピーしたGemfileを用いてbundel install
RUN bundle config --local set path 'vendor/bundle' \
  && bundle install

docker-compose.yml

docker-compose.yml
version: '3'
services:
  db:
    image: postgres
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
  web:
    build: .
    command: bundle exec rails s -p 8000 -b '0.0.0.0'
    volumes:
      - ./alcohol:/app
    ports:
      - "8000:8000"
    environment:
      RAILS_ENV: development
      DATABASE_URL: postgres://postgres:password@db:5432/Alcohol_development
    depends_on:
      - db

database.yml

hostの値にはdocker-compose.yml上で定義したデータベース用コンテナのサービス名と同一のものを設定する。

database.yml
default: &default
  adapter: postgresql
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000
  encoding: utf8
  username: Alcohol
  password:
  host: db

development:
  <<: *default
  # database: db/development.sqlite3 変更
  database: Alcohol_development

test:
  <<: *default
  # database: db/test.sqlite3 変更
  database: Alcohol_test

production:
  <<: *default
  # database: db/production.sqlite3 変更
  database: Alcohol_production
  username: Alcohol # 追加
  password: <%= ENV['ALCOHOL_DATABASE_PASSWORD'] %> # 追加

Gemfile

割愛。「gem "rails"」はRailsを利用するために必須だが、そのほかはアプリで使用するものを記述しておく。

3. ディレクトリ構成

environment
├─ Dockerfile                    
├─ docker-compose.yml 
├─ alcohol
  ├─ ・・・・                      #Railsアプリが定義されている

4. 実行順序

①Dockerイメージのビルド

bash
docker-compose build

②Dockerイメージがビルドされたことを確認

bash
docker images 

③データベースを作成

bash
docker-compose run web rails db:create   

④データベースのマイグレーション

bash
docker-compose run web rails db:migrate 

⑤コンテナの起動

bash
docker-compose up 

⑥Railsアプリにアクセスする

https://http://localhost:8000へアクセスし、アプリが表示されることを確認する。

5. 結果

ローカル環境上のDockerコンテナ上で起動したRailsアプリにアクセスすることができた。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?