Rails 배포 with Docker
참고 사이트
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 구축에서 이번에 배포까지 완료할 수 있었습니다.
Reference
이 문제에 관하여(Rails 배포 with Docker), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koumo_ri/items/4d017e9c9c47bfa6e8a0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)