Data Engineering/Docker

[Linux/Docker] Sinatra를 사용해보고 Ubuntu 서버에 배포해보자

seoraroong 2024. 8. 24. 16:46

Sinatra Web Application Library 사용하기

- 새로운 디렉토리 생성하기

 

- 생성한 디렉토리 경로에 Gemfile 생성하기

  -> Gemfile은 패키지 관련 파일이다.

vi Gemfile

 

- 디렉토리 경로에 app.rb 파일 생성하기

   -> Sinatra는 ruby 언어로 만들어져서 .py가 아니고 .rb 확장자 이름으로 파일을 생성해주어야 한다.

 

 

bundler 설치 중 다음과 같은 에러가 발생했다.

 

-> 트러블 슈팅 방법 

     다른 저장소 미러를 생성한다.

 

- Bundle 실행 

 

 

 

Gemfile과 Bundler

Gemfile

프로젝트에 필요한 gem과 그에 대한 의존성을 설정하는 파일이다. 패키지 관리자 역할을 한다.

 

Bundler

bundle install 명령어로 Gemfile에 명시된 모든 gem을 설치한다.

bundle install 명령어를 실행하면 자동으로 Gemfile.lock이라는 파일이 경로에 생성된다.

-> 이 파일은 설치된 gem의 정확한 버전 정보를 저장해 놓은 파일로, 다른 개발 환경, 배포 환경에서도 동일한 버전의 gem으로 작업할 수 있다.

 

 

Docker 사용해 Ruby 애플리케이션 실행하기

docker run --rm\
-p 4567:4567 \
-v $PWD:/usr/src/app \
-w /usr/src/app \
ruby \
bash -c "bundle install && bundle exec ruby app.rb -o 0.0.0.0"

 

→ 이 명령어를 처음 실행하면 뭘 추가하라는 메시지가 나온다

 

bundle add rackup

-> rackup은 Rack 애플리케이션을 실행하기 위한 커맨드라인 도구이다. 

    Rack은 Ruby 웹 서버 인터페이스로, 여러 Ruby 웹 프레임워크와 웹 서버에서 공통적으로 사용되는 표준 인터페이스를 제공한다. 

 

 

- 다시 애플리케이션 실행하는 명령어를 입력하면 성공적으로 Ruby 애플리케이셔이 실행된다. 

 

- localhost:4567에 접속해보자

-> 실행 중인 컨테이너의 호스트 네임을 반환하고 있다. 

 

 

 

Ruby service를 Ubuntu에 배포하기

- Dockerfile 생성하기

 

- app 빌드

 

위 과정에서 에러가 발생했다.

-> 버전 충돌이 원인으로 확인되어 Dockerfile을 다음과 같이 수정했다.

 

- 다시 Docker 빌드하기

 

- 생성한 app이라는 이미지 파일 실행해서 컨테이너에 올리기

 

- localhost:8080 접속해서 확인