새 Rails 애플리케이션 Dockerize

Rails 및 Docker를 시작하기 위한 간단한 가이드입니다.

Ruby on Rails 앱을 Docker에 배포하는 것은 Ruby gem을 배포하고 컨테이너화하는 데 유용합니다. 이는 특히 로컬 시스템에 서로 다른 버전의 Ruby와 Rails가 있는 많은 프로젝트가 있는 경우에 유용합니다. 둘째, 비호환성 및 예상치 못한 문제에 대한 걱정 없이 애플리케이션을 배포하는 것이 쉬워집니다.

다음 가이드는 이미지를 빌드하고 Docker 컨테이너에 배포하기 위해 Rails에서 새 프로젝트를 설정하는 데 도움이 됩니다.

시작하려면 최소한 5개의 파일이 필요합니다.
  • 도커파일
  • docker-compose.yml
  • .dockerignore
  • 젬파일
  • Gemfile.lock

  • 도커파일






    Dockerfile의 경우 Rails를 실행할 nodejs를 설치할 Ruby 이미지를 빌드해야 합니다. 파일은 Gemfile 및 Gemfile.lock을 가져와서 WORKDIR에 복사합니다. 그런 다음 번들 설치 명령이 이미지 내에서 실행되어 Gemfile에 나열된 gem을 설치합니다.



    젬파일



    Gemfile은 처음에 Rails gem만 포함합니다.



    source 'https://rubygems.org' 
    git_source(:github) { |repo| "https://github.com/#{repo}.git"
    
    gem 'rails', '~> 5.2.4', '>= 5.2.4.2'
    


    Gemfile.lock



    Gemfile.lock은 빈 파일이 됩니다. 하나 만드세요.


    docker-compose.yml




    <스크립트 아이디="gist-ltag"src="https://gist.github.com/vshl/a746af9cc386246efd42c6b065b14e9a.js"/>


    docker-compose는 디버거, 실행할 서버 명령 및 로컬 시스템과 도커 이미지 간의 볼륨 공유를 설정하고 노출할 포트를 설정하는 기본 파일입니다.



    .dockerignore



        .git/
        .gitignore
        log/*
        tmp/*
        db/*.sqlite3
        db/*.sqlite3-journal
    


    파일이 준비되면 다음은 이미지를 빌드하고 이미지에 새 Rails 애플리케이션을 설정하는 것입니다. 터미널 실행:



    docker-compose up -d



    명령은 docker-compose.yml 파일을 통해 실행되고 이미지를 빌드합니다. 완료되면 Rails gem이 설치된 이미지가 생성됩니다. 다음은 새로운 Ruby on Rails 애플리케이션을 만드는 것입니다. 생성된 이미지를 사용하여 컨테이너에서 명령을 실행합니다.



    docker-compose run web rails new . -GMOPCSJT --force --no-deps



    인수 -GMOPCSJT -G git에 대한 추가 상용구 파일 및 디렉토리 생성을 건너뛰어야 하는 경우 선택 사항입니다. , -M action-mailer , -O active-record , -P puma , -C action-cable , -S sprockets , -J javascript , -T test-cases . 프로젝트에 필요한 인수를 자유롭게 추가하십시오.



    이 명령은 WORKDIR 도커 이미지의. 완료되면 다음 명령을 실행하여 Docker 이미지를 다시 빌드하는 것이 적합합니다.



    docker-compose up -d --build



    완료되면 포트 3000에서 서버가 실행됩니다. http://localhost:3000



    바로 그것입니다!



    복제하고 바로 시작할 수 있도록 git repo를 만들었습니다.



    git clone [email protected]:vshl/rails-docker-skel.git



    우수 사례를 따를 수 있는 더 나은 방법을 찾는 대로 해당 리포지토리와 이 블로그 게시물을 계속 업데이트하겠습니다.

    좋은 웹페이지 즐겨찾기