본문 바로가기
BackEnd/배포

[배포] Docker로 Ruby On Rails 배포하기

by 경험의 가치 2024. 5. 3.

FROM ruby:3.0.2-slim

WORKDIR /app

RUN apt-get update
RUN apt-get install -y build-essential apt-utils libpq-dev default-mysql-client default-libmysqlclient-dev

COPY Gemfile Gemfile.lock ./

RUN gem install bundler && RAILS_ENV=production bundle install --jobs 20 --retry 5

ENV RAILS_ENV=production

COPY . ./

ENTRYPOINT ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]

 

Ruby on Rails 파일을 Docker로 배포 해본다. 

RAILS_ENV에 test, production, development 중에서 적어주면 된다.

나는 최종 배포를 대상으로 한 것이므로 production을 적었다.

 

추가적으로, default-mysql-client와 default-libmysqlclient-dev는 gem 라이브러리 중에서 Mysql을 사용할 경우 적는 것이다. 다른 DB를 사용한다면 다른 것을 적어야 한다.

 

여기서 내가 시간 허비를 많이 했는데, 여러 글들을 찾아봐도 mysql-client를 설치하라고 했다. 하지만, 그렇게 돌려보면 docker build하는 과정에서 오류가 날 것이다. Base Image Ruby Slim에서는 mysql-client가 아닌, default-mysql-client로 설치해줘야 된다.