Docker로 Rails 환경 구축
부정기적으로 업데이트합니다.
이번에는 Ruby on Rails의 환경 구축.
이번에는 Docker에서 Rails 튜토리얼을 진행하기 위한 Rails 프로젝트를 만듭니다.
rbenv 등을 이용한 로컬 환경 구축이 아닙니다.
전치
전제로...
### 응용 요구 사항
굉장히 짜증나지만, 이런 이미지, 컨테이너를 만드는 것이 목표입니다.
렛츠 환경 구축
STEP1 rails new 명령까지 준비
PJ 용 디렉토리를 만들고 그 안에서 작업합니다.
먼저 필요한 파일을 준비합시다.
touch Dockerfile docker-compose.yml Gemfile Gemfile.lock .gitignore
Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.5'
gem 'rails', '~> 6.0.2', '>= 6.0.2.1'
Dockerfile
FROM ruby:2.6.5-alpine
ENV LANG="C.UTF-8" \
PACKAGES="curl-dev build-base alpine-sdk tzdata sqlite-dev less ruby-dev nodejs"
RUN apk update && \
apk add --no-cache --update $PACKAGES
WORKDIR /var/www
COPY ./ ./
RUN gem install bundler && \
bundle install -j4
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0", "-p", "3000"]
docker-compose.yml
version: '3'
services:
app:
build:
context: ./
dockerfile: Dockerfile
volumes:
- ./:/var/www
ports:
- "3000:3000"
tty: true
stdin_open: true
restart: always
.gitignore
# Ignore bundler config.
/.bundle
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal
/db/*.sqlite3-*
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore uploaded files in development.
/storage/*
!/storage/.keep
/public/assets
.byebug_history
# Ignore master key for decrypting credentials and more.
/config/master.key
.idea
.vscode
.DS_store
일단 여기까지 만들어 버립니다.
(.gitignore는 원한다면)
여기까지 만들면 이미지를 만듭니다.
docker-compose build
STEP2 Rails 프로젝트 작성, 미세 수정
build가 완료되면 드디어 Rails 프로젝트를 만듭니다.
-d sqlite -> 使用DBをsqlite3を選択
-B -> プロジェクト作成後のbundle installをしない(修正するからスキップで)
--skip-webpack-install -> プロジェクト作成後のwebpacker:installをしない
--skip-spring -> プロジェクト作成後のspringのinstallをしない
docker-compose run --rm app rails new -d sqlite3 -B --skip-webpack-install --skip-spring .
명령을 실행하면 일부 파일이 이미 존재하지만 어떻게해야합니까 ~? 같아요.
.gitignore 파일은 덮어 쓰지 않고 Gemfile은 덮어 씁니다.
conflict .gitignore
Overwrite /var/www/.gitignore? (enter "h" for help) [Ynaqdhm] n
skip .gitignore
conflict Gemfile
Overwrite /var/www/Gemfile? (enter "h" for help) [Ynaqdhm] Y
force Gemfile
Gemfile의 webpacker에 대한 설명을 지웁니다.
Gemfile
# 下記二行を削除
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 4.0'
서버를 시작한 후 sw.js가 없으면 오류를 토해 버리므로 임시로 만들어 둡시다.
touch public/sw.js
여기까지 오면 좀 더, bundle install과 db의 작성, 마이그레이션을 실행합니다.
그 전에 gem을 업데이트하기 위해 다시 빌드 해 봅시다.
docker-compose build
docker-compose run --rm app rails db:create
docker-compose run --rm app rails db:migrate
STEP3 Rails 프로젝트 시작
그리고는 명령 하나로 Rails 서버가 시작됩니다.
docker-compose up -d
http://localhost:3000 에서 일어나는 것을 확인합시다.
했어.
끝에
완성된 소스 코드는 여기에 있습니다. (변경 있을지도 모르지만)
RubyMine을 최근에 구입했기 때문에 앞으로 우키 우키로 코드 쓰려고합니다.
Rails에 관한 기사를 앞으로 부정기입니다만 숙련 업 해 가므로 좋으면!
Reference
이 문제에 관하여(Docker로 Rails 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fussy113/items/e9f7457ad4de74023ef6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)