Docker로 Ruby on Rails 애플리케이션 구축하기

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

 

 

Rails와 데이터베이스 컨테이너 생성하기

Rails와 데이터베이스 이미지 준비가 끝났으니 컨테이너를 생성합니다. 먼저 데이터베이스 컨테이너부터 생성합니다.

$ sudo docker run -d --name db -e POSTGRESQL_PASSWORD=examplepassword postgresql
  • 데이터베이스 컨테이너를 생성할 때 -e 옵션을 사용하여 POSTGRESQL_PASSWORD에 사용할 postgres 계정의 비밀번호를 설정합니다.

Rails 애플리케이션 디렉터리로 이동한 뒤 Rails 데이터베이스를 초기화합니다.

~$ export POSTGRESQL_HOST=$(sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" db)
~$ export DB_ENV_POSTGRESQL_PASSWORD=examplepassword
~$ export RAILS_ENV=development
~$ cd
~$ cd exampleapp
~/exampleapp$ rake db:create
  • export 명령을 사용하여 환경 변수의 POSTGRESQL_HOSTdb 컨테이너의 IP 주소를 설정합니다.
    • docker inspect 명령에서 -f 옵션을 사용하면 특정 항목만 출력할 수 있습니다. ”{{ .NetworkSettings.IPAddress }}”는 컨테이너의 IP 주소입니다.
  • export 명령을 사용하여 환경 변수의 DB_ENV_POSTGRESQL_PASSWORD에 PostgreSQL데이터베이스 비밀번호를 설정합니다.
  • export 명령을 사용하여 환경 변수의 RAILS_ENVdevelopment를 설정합니다(각자 상황에 따라 production, test를 설정합니다).
  • rake db:create를 실행하여 Rails 데이터베이스를 초기화합니다.

MySQL 사용하기

~$ export MYSQL_HOST=$(sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" db)
~$ export DB_ENV_MYSQL_ROOT_PASSWORD=examplepassword
~$ export RAILS_ENV=development
~$ cd
~$ cd exampleapp
~/exampleapp$ rake db:create

Rails 컨테이너를 생성합니다.

$ sudo docker run -d --name example-rails -p 80:80 --link db:db rails
  • Rails 컨테이너를 생성할 때 --link 옵션을 사용하여 db 컨테이너를 db 별칭으로 연결합니다. 그리고 -p 옵션을 사용하여 외부에서 80번 포트에 접근할 수 있도록 설정합니다.

컨테이너 생성이 끝났으면 웹 브라우저를 실행하고 서버의 IP 주소나 도메인으로 접속합니다.


그림 17-2 웹 브라우저에서 Rails 컨테이너에 접속

추가 해설
--link옵션은 추후 사라질 예정입니다. 네트워크를 생성하여 컨테이너를 연결하는 방법은 ‘6.2 Docker 컨테이너 연결하기’의 추가 해설을 참조하기 바랍니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

30 November 2014