Docker 및 docker-compose를 사용한 Rails API 모드 환경 구축
5501 단어 환경 구축Railsdocker-compose도커루비
전제
Docker & docker-compose 설치됨
운영 환경
디렉토리를 만듭니다.
mkdir rails_api_docker
cd rails_api_docker
Gemfile과 Dockerfile을 만듭니다.
Gemfile
source 'https://rubygems.org'
gem 'rails', '6.0.3'
Dockerfile
FROM ruby:2.7.1-alpine3.11
ENV BUNDLER_VERSION=2.1.4
WORKDIR /usr/src/app
COPY Gemfile .
COPY Gemfile.lock .
RUN apk update && \
apk add --no-cache \
shared-mime-info \
linux-headers \
libxml2-dev \
curl-dev \
make \
gcc \
libc-dev \
g++ \
sqlite-dev \
tzdata && \
gem install bundler && \
bundle install
COPY . .
EXPOSE 3000
설치할 bundler 버전을 지정하기 위해
ENV
에서 환경 변수를 정의했습니다.Dockerfile을 기반으로 Docker 이미지를 만듭니다.
docker build -t rails_api:6.0.3 .
작성한 이미지에서 컨테이너를 시작하고 Rails 애플리케이션을 작성하십시오.
docker run --rm -v $(pwd):/usr/src/app -w /usr/src/app rails_api:6.0.3 rails new . --skip-keeps -M -C -S -J -B
옵션
설명
--skip-keeps
.keep 파일을 만들지 않음
-M
Action Mailer, Action Mailbox, Action Text 관련 파일을 만들지 않음
-C
Action Cable 관련 파일을 만들지 않음
-S
Sprockets, Spring, listen을 사용하지 않음
-J
JavaScript, turbolinks 사용 안함
-B
bundle install을 실행하지 않음
docker-compose.yml
를 작성합니다.docker-compose.yml
version: '3'
services:
api:
build: .
ports:
- '3000:3000'
volumes:
- .:/usr/src/app
tty: true
command: ["rails", "server", "-b", "0.0.0.0"]
docker-compose로 컨테이너를 시작합니다.
docker-compose up
localhost:3000
로 이동합니다. 시작 화면이 표시되면 성공입니다.API 동작 확인
시작 중인 컨테이너에 로그인합니다.
docker-compose exec api sh
이번에는 간단하게하기 위해
scaffold
를 사용하여 controller와 model을 만듭니다.rails g scaffold User name:string
/db/seeds.rb
에 다음을 추가하여 테스트 데이터를 만듭니다.seeds.rb
User.create name: "Euclid"
DB를 초기화하고 테스트 데이터를 반영합니다.
rails db:create
rails db:migrate
rails db:seed
/app/controllers/users_controller.rb
의 index 액션을 다음으로 변경합니다.users_controller.rb
def index
@users = User.all
render json: @users
end
localhost:3000/users
에 접속해 다음이 표시되면 성공입니다.읽어 주셔서 감사합니다! 지적이나 의견 등 있으면 댓글을 주시면 기쁩니다 🐳
Reference
이 문제에 관하여(Docker 및 docker-compose를 사용한 Rails API 모드 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cordelia/items/5989576e62db2402e208텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)