1. 개요

<Docker 가상 환경 구축 입문>의 <Chapter 10. AWS를 활용한 Rails 애플리케이션 배포>를 읽고 정리한 내용으로,

AWS에 구성한 Docker Swarm에서 rails 애플리케이션을 실행하는 과정을 설명합니다.


2. Rails 애플리케이션 실행

  • 실행을 위해 필요한 환경 변수
    • RAILS_ENV : 애플리케이션이 동작할 환경을 지정. 운영 환경일 경우 production.
    • SECRET_KEY_BASE : 애플리케이션 내 암호화 처리 등에서 사용되는 무작위 문자열.
    • APP_DATABASE_HOST : production 환경에서 사용할 데이터베이스의 호스트 명을 지정. (RDS 인스턴스의 엔드포인트 등)
    • APP_DATABASE_PASSWORD : production 환경에서 사용할 데이터 베이스에 접속하기 위한 비밀번호. (RDS 생성 시 지정한 비밀번호)
    • RAILS_SERVE_STATIC_FILES : rails로 정적 파일까지 서비스하기 위해서는 true로 설정.
  • env.list 파일 작성
    RAILS_ENV=production
    SECRET_KEY_BASE=xxxxxxx
    APP_DATABASE_HOST=[RDS의 엔드포인트]
    APP_DATABASE_PASSWORD=xxxxxx
    RAILS_SERVE_STATIC_FILES=true
    
  • rails 애플리케이션 실행
    $ docker login
    $ docker service create -d --name rails --replicas 2 --publish 80:3000 --env-file env.list \
    --with-registry-auth snowball1234/rails-app
    
    • env.list에 지정된 환경 변수 적용을 위해 --env-file 옵션 사용
    • 개인 리포지터리에서 이미지를 받아와서 사용하기 위해 --with-registry-auth 옵션 사용
  • DB 마이그레이트를 통해 DB 테이블 생성
    $ docker run --rm --env-file env.list snowball1234/rails-app \
    bundle exec rails db:migrate
  • manager1의 ip를 통해 접근하여 애플리케이션을 확인할 수 있음.