Ubuntu에서 Docker 및 Docker Compose를 사용하여 Ruby on Rails 개발 환경 설정
이 페이지에서
- 1단계 - Docker 및 Docker Compose 설치
- 2단계 - Ruby on Rails 프로젝트 생성\n
- 3단계 - Rails 프로젝트 설정\n
- 4단계 - Docker Compose 파일 만들기
- 5단계 - 프로젝트 구축\n
- 6단계 - Rails에서 기본 CRUD 생성 테스트
- 참조
Docker는 개발자와 시스템 관리자가 어디에서나 경량 컨테이너로 애플리케이션을 빌드, 패키징 및 실행할 수 있는 개방형 플랫폼을 제공하는 오픈 소스 프로젝트입니다. Docker는 소프트웨어 컨테이너 내부의 애플리케이션 배포를 자동화합니다.
RoR(Ruby on Rails)은 MIT 라이선스로 게시된 오픈 소스 웹 애플리케이션 프레임워크입니다. MVC(Model-View-Controller) 개념을 따르는 서버 측 웹 애플리케이션 프레임워크입니다.
이 가이드에서는 Docker 및 Docker Compose를 사용하여 Ruby on Rails 애플리케이션용 개발 환경을 설정하는 방법을 보여드리겠습니다. Ubuntu 18.04를 호스트 운영 체제로 사용하고 Rails 프로젝트에 PostgreSQL 데이터베이스를 사용할 것입니다.
우리가 할 일:
- Docker 및 Docker Compose 설치
- Rails 프로젝트 생성\n
- Rails 프로젝트 설정\n
- Docker Compose 스크립트 만들기
- 프로젝트 구축\n
- 레일에서 기본 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/