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를 통해 접근하여 애플리케이션을 확인할 수 있음.