호스트 환경의 Ruby를 사용하지 않고 Docker를 사용하여 Rails new
제목
호스트 환경의 Ruby를 사용하지 않고 Docker의 Ruby만으로 rails new
명령을 사용하여 Ruby on Rails 환경을 구축합니다.
환경
절차
Ruby의 Docker 이미지 얻기
docker pull 2.6.5-alpine3.10
Gemfile 만들기
docker run --rm -v (pwd):/usr/src/myapp -w /usr/src/myapp 2.6.5-alpine3.10 bundle init
Gemfile
의 rails
의 행의 코멘트 아웃을 제외합니다.
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails"
Docker 이미지 만들기
Rails는 의존 라이브러리가 많기 때문에 Dockerfile을 만들어 의존 라이브러리가 포함된 이미지를 만듭니다.
다음 내용을 Dockerfile
로 저장합니다.
FROM 2.6.5-alpine3.10
ENV BUILD_PACKAGES="curl-dev ruby-dev build-base" \
DEV_PACKAGES="zlib-dev libxml2-dev libxslt-dev tzdata yaml-dev sqlite-dev" \
RUBY_PACKAGES="ruby-json yaml"
# Update and install base packages and nokogiri gem that requires a
# native compilation
RUN apk update && \
apk upgrade && \
apk add --no-cache --update\
$BUILD_PACKAGES \
$DEV_PACKAGES \
$RUBY_PACKAGES && \
mkdir -p /usr/src/myapp
# Copy the app into the working directory. This assumes your Gemfile
# is in the root directory and includes your version of Rails that you
# want to run.
WORKDIR /usr/src/myapp
COPY Gemfile /usr/src/myapp
COPY Gemfile.lock /usr/src/myapp
RUN gem install bundler
RUN bundle config build.nokogiri --use-system-libraries && \
bundle install --jobs=4 --retry=10 --clean
Gemfile.lock을 복사하므로 빈 파일을 준비합니다.
touch Gemfile.lock
docker 이미지를 만듭니다.
docker build -t temp .
Rails 설치
docker run --rm -v (pwd):/usr/src/myapp temp bundle
Rails new
docker run --rm -v (pwd):/usr/src/myapp temp rails
rails
명령 옵션에 대한 설명이 표시됩니다.
좋은 옵션을 선택합니다.
여기서는 -MCTBS --skip-yarn --skip-turbolinks --skip-bundle --api
를 지정하기로 결정합니다.
docker run --rm -v (pwd):/usr/src/myapp temp rails new . -f -MCTBS --skip-yarn --skip-turbolinks --skip-bundle --api
시작 확인
Gemfile을 업데이트하고 종속 Gem을 추가했으므로 Docker 이미지를 다시 만듭니다.
docker build -t temp .
Ruby on Rails를 시작합니다.
docker run --rm -it -v (pwd):/usr/src/myapp -p 80:3000 temp bin/rails s -b 0.0.0.0
브라우저에서 http://localhost/을 엽니다.
열면 성공입니다!
Reference
이 문제에 관하여(호스트 환경의 Ruby를 사용하지 않고 Docker를 사용하여 Rails new), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ledsun/items/83fee24dea251bd3a3f3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
docker pull 2.6.5-alpine3.10
docker run --rm -v (pwd):/usr/src/myapp -w /usr/src/myapp 2.6.5-alpine3.10 bundle init
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails"
FROM 2.6.5-alpine3.10
ENV BUILD_PACKAGES="curl-dev ruby-dev build-base" \
DEV_PACKAGES="zlib-dev libxml2-dev libxslt-dev tzdata yaml-dev sqlite-dev" \
RUBY_PACKAGES="ruby-json yaml"
# Update and install base packages and nokogiri gem that requires a
# native compilation
RUN apk update && \
apk upgrade && \
apk add --no-cache --update\
$BUILD_PACKAGES \
$DEV_PACKAGES \
$RUBY_PACKAGES && \
mkdir -p /usr/src/myapp
# Copy the app into the working directory. This assumes your Gemfile
# is in the root directory and includes your version of Rails that you
# want to run.
WORKDIR /usr/src/myapp
COPY Gemfile /usr/src/myapp
COPY Gemfile.lock /usr/src/myapp
RUN gem install bundler
RUN bundle config build.nokogiri --use-system-libraries && \
bundle install --jobs=4 --retry=10 --clean
touch Gemfile.lock
docker build -t temp .
docker run --rm -v (pwd):/usr/src/myapp temp bundle
docker run --rm -v (pwd):/usr/src/myapp temp rails
docker run --rm -v (pwd):/usr/src/myapp temp rails new . -f -MCTBS --skip-yarn --skip-turbolinks --skip-bundle --api
docker build -t temp .
docker run --rm -it -v (pwd):/usr/src/myapp -p 80:3000 temp bin/rails s -b 0.0.0.0
Reference
이 문제에 관하여(호스트 환경의 Ruby를 사용하지 않고 Docker를 사용하여 Rails new), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ledsun/items/83fee24dea251bd3a3f3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)