Rails 배포 with Docker

6179 단어 MySQL경 6도커Rails

참고 사이트



Docker 초입문 : 키요토의 프로그래밍 대학

참조

Rails 환경 구축 with Docker
여기에서 Docker를 사용한 Rails의 환경 구축까지를 실시하고 있습니다.

Docker 용어 및 명령
Docker에 대한 용어 및 명령에 대해 자세히 알아보기

환경



Mac OS
docker-compose 1.27.4
heroku/7.47.7
Mysql 8.0
루비 2.7
rails 6.1.0

heroku 구현



heroku 로그인



terminal.
rails_on_docker % heroku login
heroku: Press any key to open up the browser to login or q to exit:  //Enterキーでログイン
rails_on_docker % heroku container:login

heroku 앱 만들기



terminal.
rails_on_docker % heroku create <rails-koumori>  // < >内は任意の名前を指定

데이터베이스 추가 및 설정



데이터베이스 추가



terminal.
rails_on_docker % heroku addons:create cleardb:ignite -a rails-koumori 

프로덕션 환경의 연결 대상 정보를 환경 변수로 수정

database.yml
production:
  <<: *default
  database: <%= ENV['APP_DATABASE_DATABASE'] %>
  username: <%= ENV['APP_DATABASE_USERNAME'] %>
  password: <%= ENV['APP_DATABASE_PASSWORD'] %>
  host: <%= ENV['APP_DATABASE_HOST'] %>

연결 대상 정보를 환경 변수로 설정

terminal.
rails_on_docker % heroku config -a rails-koumori
CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@ホスト名/データベース名?reconnect=true

rails_on_docker % heroku config:add APP_DATABASE='データベス名'-a rails-koumori
rails_on_docker % heroku config:add APP_USERNAME='ユーザー名' -a rails-koumori
rails_on_docker % heroku config:add APP_PASSWORD='パスワード' -a rails-koumori
rails_on_docker % heroku config:add APP_HOST='ホスト名' -a rails-koumori

rails_on_docker % heroku config -a rails-koumori  //登録の確認

프로덕션 환경에 대한 설명



빈 파일 만들기

terminal.
rails_on_docker % touch start.sh  

start.sh
#!/bin/sh

# 本番環境
if [ "${RAILS_ENV}" ="production" ]
then
    bundle exec rails assets:precompile
fi

bundle exec rails s -p ${PORT:-3000} -b 0.0.0.0

Dockerfile 추가

Dockerfile
# ベースイメージの指定
FROM ruby:2.7

#追記
ENV RAILS_ENV=production  
.
.
.
.

#dockerにコピー
COPY start.sh /start.sh  
#実行権限を付与
RUN shmod 744 /start.sh  
#起動時に実行
CMD ["sh","/start.sh"]   

프로덕션 환경에 적용

terminal.
rails_on_docker % heroku config:add RAILS_SERVE_STATIC_FILES="true" -a r
ails-koumori  //本番環境にassets:precompileを適用

rails view 화면 구현



컨트롤러 작성

terminal.
rails_on_docker % docker-compose exec web bundle exec rails g controller users 

톱 페이지에 users/index 지정

routes.rb
Rails.application.routes.draw do
  get '/',to: "users#index"
end

컨트롤러 설명

users.controller.rb
class UsersController < ApplicationController
  def index
  end
end

index.html.erb 파일 작성 및 설명

src>app>views>users>index.html.erb
<h1>Hello world!</h1>

Docker 컨테이너 푸시 및 heroku에 릴리스



Docker 이미지를 빌드하고 컨테이너로 푸시

terminal.
rails_on_docker % heroku container:push web -a rails-koumori

heroku에 컨테이너 출시

terminal.
rails_on_docker % heroku container:release web -a rials-koumori

heroku를 시작하고 브라우저에서 확인

terminal.
rails_on_docker % heroku open -a rails-koumori



요약



이전 Rails 구축에서 이번에 배포까지 완료할 수 있었습니다.

좋은 웹페이지 즐겨찾기