웹사이트 검색

Ubuntu에서 Docker 및 Docker Compose를 사용하여 Ruby on Rails 개발 환경 설정


이 페이지에서

  1. 1단계 - Docker 및 Docker Compose 설치
  2. 2단계 - Ruby on Rails 프로젝트 생성\n
  3. 3단계 - Rails 프로젝트 설정\n
  4. 4단계 - Docker Compose 파일 만들기
  5. 5단계 - 프로젝트 구축\n
  6. 6단계 - Rails에서 기본 CRUD 생성 테스트
  7. 참조

Docker는 개발자와 시스템 관리자가 어디에서나 경량 컨테이너로 애플리케이션을 빌드, 패키징 및 실행할 수 있는 개방형 플랫폼을 제공하는 오픈 소스 프로젝트입니다. Docker는 소프트웨어 컨테이너 내부의 애플리케이션 배포를 자동화합니다.

RoR(Ruby on Rails)은 MIT 라이선스로 게시된 오픈 소스 웹 애플리케이션 프레임워크입니다. MVC(Model-View-Controller) 개념을 따르는 서버 측 웹 애플리케이션 프레임워크입니다.

이 가이드에서는 Docker 및 Docker Compose를 사용하여 Ruby on Rails 애플리케이션용 개발 환경을 설정하는 방법을 보여드리겠습니다. Ubuntu 18.04를 호스트 운영 체제로 사용하고 Rails 프로젝트에 PostgreSQL 데이터베이스를 사용할 것입니다.

우리가 할 일:

  1. Docker 및 Docker Compose 설치
  2. Rails 프로젝트 생성\n
  3. Rails 프로젝트 설정\n
  4. Docker Compose 스크립트 만들기
  5. 프로젝트 구축\n
  6. 레일에서 기본 CRUD 생성 테스트

1단계 - Docker 및 Docker Compose 설치

우리가 해야 할 첫 번째 단계는 docker와 docker compose 자체를 설치하는 것입니다. 공식 도커 리포지토리에서 도커를 설치하고 공식 도커 GitHub 프로젝트에서 docker-compose를 설치합니다.

Docker 패키지를 설치하기 전에 아래의 apt 명령을 실행하여 패키지 종속성을 설치하십시오.

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

이제 도커 키와 도커 리포지토리를 추가합니다.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

이 명령은 시스템의 모든 리포지토리를 자동으로 업데이트합니다. 완료되면 docker-ce 패키지를 설치합니다.

sudo apt install -y docker-ce

docker-ce 설치를 기다린 다음 docker 서비스를 시작하고 부팅 시간에 추가합니다.

sudo systemctl start docker
sudo systemctl enable docker

Docker가 시스템에서 실행 중입니다.

다음으로 docker GitHub 리포지토리에서 직접 바이너리 파일을 다운로드하여 docker-compose를 설치합니다.

docker-compose 바이너리 파일을 /usr/local/bin/ 디렉터리에 다운로드하고 실행 파일로 만듭니다.

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker 및 docker-compose가 시스템에 설치되었습니다. 아래 명령을 사용하여 버전을 확인하십시오.

docker version
docker-compose version

아래는 결과입니다.

2단계 - Ruby on Rails 프로젝트 생성

핵심 패키지인 docker 및 docker-compose를 시스템에 설치한 후 새 사용자를 생성한 다음 docker 이미지를 사용하여 Rails 프로젝트를 생성하려고 합니다.

hakase라는 사용자를 추가하고 사용자에게 암호를 제공합니다.

useradd -m -s /bin/bash hakase
passwd hakase

사용자를 sudo 및 docker 그룹에 추가하고 hakase 사용자 셸에 로그인합니다.

usermod -a -G sudo hakase
usermod -a -G docker hakase
su - hakase

이제 hakase 사용자는 docker 명령을 실행하고 실행할 수 있습니다.

다음으로 Ruby on Rails 프로젝트를 위한 새 디렉토리 rails를 생성합니다.

rails 디렉토리를 생성하고 이동합니다.

mkdir -p ~/rails
cd ~/rails/

이제 아래의 docker run 명령을 실행합니다.

docker run --rm -v ${PWD}:/usr/src -w /usr/src -ti ruby:alpine sh ; cd app

이 명령은 ruby:alpine 이미지를 기반으로 임시 컨테이너를 실행하고 컨테이너 내부의 /usr/src 디렉터리에 로컬 디렉터리를 마운트한 다음 sh shell 명령을 실행하고 앱 디렉터리로 이동합니다.

컨테이너 내부에 빌드 기반 패키지를 설치합니다.

apk add build-base

이제 임시 컨테이너 안에 Ruby on Rails를 설치합니다.

gem install -N rails

그리고 PostgreSQL을 데이터베이스로 사용하여 app이라는 새 Rails 프로젝트를 생성한 다음 컨테이너에서 종료/로그아웃합니다.

rails new app --database=postgresql --skip-bundle
exit

그러면 Rails 프로젝트 디렉토리 앱에 있게 됩니다.

이제 앱 프로젝트 디렉토리의 소유자를 hakase 사용자로 변경하십시오.

sudo chown -R hakase:hakase ~/rails/app/
ls -lah

그리고 Ruby on Rails 프로젝트는 임시 도커 컨테이너를 통해 생성되었습니다.

3단계 - Rails 프로젝트 설정

이 단계에서는 Rails 애플리케이션을 위한 새 Dockerfile을 생성합니다.

rails 디렉터리 내에서 vim을 사용하여 새 Dockerfile을 만듭니다.

vim Dockerfile

아래에 구성을 붙여넣습니다.

FROM ruby:alpine

RUN apk update
RUN apk add build-base nodejs postgresql-dev tzdata
RUN gem install -N rails

RUN mkdir -p /app
WORKDIR /app

COPY ./app/Gemfile /app
COPY ./app/Gemfile.lock /app
RUN bundle install --binstubs

저장 및 종료.

Ruby Alpine Linux를 기반으로 새로운 도커 이미지를 만들었습니다. Rails 설치를 위한 새 패키지를 설치하고, 새 /app 디렉터리를 만들고, 앱 로컬 디렉터리에서 Gemfile 및 Gemfile.lock을 복사하고, Gemfile을 기반으로 모든 패키지를 설치했습니다.

다음으로 앱 디렉토리로 이동하여 새 파일 Gemfile.lock을 만듭니다.

cd app/
touch Gemfile.lock

database.yml 파일을 편집합니다.

vim config/database.yml

기본 데이터베이스 구성을 변경하고 아래와 같이 세부 사항을 변경합니다.

default: &default
   adapter: postgresql
   encoding: unicode
   host: db
   username: postgres
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   timeout: 5000

저장 및 종료.

Rails 프로젝트 구성이 완료되었습니다.

4단계 - Docker Compose 파일 생성

이 단계에서는 Rails 애플리케이션을 위한 새로운 docker-compose 파일을 생성합니다. 우리는 두 개의 서비스 db 데이터베이스 PostgreSQL만 생성하고 웹은 레일스 애플리케이션 자체입니다.

rails 디렉터리 내에 새 파일 docker-compose.yml을 만듭니다.

vim docker-compose.yml

그리고 아래에 구성을 붙여넣습니다.

version: '3.6'

services:

  db:
    image: postgres:alpine
    volumes:
      - ./postgresql:/var/lib/postgresql/data

  web:
    build: .
    volumes:
      - ./app:/app
    working_dir: /app
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports:
      - 80:3000
    depends_on:
      - db

저장 및 종료.

이제 rails 프로젝트 내에 postgresql 디렉토리를 생성합니다.

mkdir -p ~/rails/postgresql

그리고 Rails 프로젝트를 구축할 준비가 되었습니다.

5단계 - 프로젝트 빌드

아래의 docker-compose 명령을 사용하여 Rails 도커 이미지를 빌드합니다.

docker-compose build

이 명령은 Ruby Alpine Linux 이미지를 다운로드하고 Dockerfile을 기반으로 필요에 따라 사용자 지정 이미지를 빌드합니다.

프로젝트에 대한 PostgreSQL 데이터베이스를 생성합니다.

docker-compose run web rake db:create

이제 db 및 웹 서비스를 시작하십시오.

docker-compose up -d

Rails 서비스가 실행 중입니다. 아래의 docker-compose 명령을 사용하여 확인하세요.

docker-compose ps

서비스 웹이 호스트의 포트 80에서 실행되는 것을 볼 수 있습니다.

이제 시스템에서 도커 이미지를 확인하십시오.

docker-compose images

그러면 아래와 같은 결과를 얻게 됩니다.

이제 웹 브라우저를 열고 서버 IP 주소 또는 도메인 이름을 입력하십시오. 내 것은:

http://rails.hakase-labs.io/

그러면 기본 Rails 페이지 애플리케이션이 표시됩니다.

이제 Rails 프로젝트를 개발할 준비가 되었습니다.

6단계 - Rails에서 기본 CRUD 생성 테스트

웹 컨테이너 서비스 내에서 rails 명령을 실행하여 레일에서 간단한 CRUD를 생성합니다.

docker-compose exec web rails g scaffold Post title:string body:text

이제 데이터베이스를 생성합니다.

docker-compose exec web rake db:migrate

이제 웹 브라우저를 열고 주소 표시줄에 /posts 경로로 서버 IP 주소를 입력합니다. 내 것은:

http://rails.hakase-labs.io/posts

그러면 아래와 같이 간단한 CRUD 페이지가 나타납니다.

게시물을 입력하고 게시물 작성 버튼을 클릭합니다.

그러면 아래와 같은 결과를 얻게 됩니다.

Docker 및 Docker Compose를 사용한 Ruby on Rails용 개발 환경 설정이 성공적으로 완료되었습니다.

참조

  • https://docs.docker.com/