docker-compose로 Rails5.2 개발 환경
7917 단어 docker-composeRails5
지금은 느낌도 있고, 이것이 정답이 아니라고 생각합니다만, 공식 절차 (을)를 참고에 가능한 한 커멘드를 심플하게 해 보았습니다. 운용해 가는데 있어서 결국 실행 취소(명령을 더한다) 가능성도 있습니다만, 우선 기동해 움직여 보기 위해공식 절차는 여러가지 하고 있다고 생각했기 때문에, 최대한 좁은 구성으로 하고 있습니다 .
(6계는 yarn과 webpacker 주위가 복잡하고 아직 경원하고 있습니다만… 일단 해 보았습니다 -> 기사 )
설치
먼저 필요한 파일은 두 개뿐입니다.
docker-compose.yml
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: secret
volumes:
- ./postgresql/data:/var/lib/postgresql/data
web:
build:
context: .
dockerfile: docker-web
command: "rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/railsapp
ports:
- "3000:3000"
depends_on:
- db
docker-web
FROM ruby:2.6.6
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN gem install rails -v "~> 5.2" -N
RUN mkdir /railsapp
WORKDIR /railsapp
COPY . /railsapp
# 後で有効化
# RUN bundle install
위의 두 파일을 넣은 디렉토리에서 새 프로젝트를 만듭니다.
docker-compose run web rails new . --database=postgresql
조금 시간이 걸리지만 rails 관련 새 파일이 생성되었습니다.
Docker 환경에서는 데이터베이스가 localhost에 존재하지 않으므로 composer에서 만든 db에 연결하도록 설정을 변경합니다.
railsapp/config/database.yml
host: db
username: postgres
password: secret
그런 다음 Dockerfile
RUN bundle install
의 행을 활성화하고 (주석 제거) build를 실행합니다.docker-compose build
docker-compose up
지금까지 웹 서버가 시작된 상태이지만 데이터베이스를 초기화해야합니다. 다른 터미널을 시작하여 다음을 실행합니다 (exec는 컨테이너가 시작된 (= up 된) 상태에서 명령을 실행하는 부속 명령입니다).
docker-compose exec web rails db:create
여기까지 실행하면 브라우저에서 'localhost:3000'에 액세스하면 Rails의 첫 페이지가 보일 것입니다.
같은 요령으로, scaffold를 작성하거나, 여기로부터는 평소의 rails의 노리로 작업을 할 수 있을 것 같습니다(선두의
docker-compose exec web
를 제외하면 보통의 Rails 명령입니다).docker-compose exec web rails g scaffold post title:string body:text published:boolean
docker-compose exec web rails db:migrate
보충 1
디폴트의 Gemfile은, bundle install 후에 여러 가지 경고가 나옵니다. 경고 내용에 따라 새로운 젬으로 교체하고 있습니다.
Gemfile
# gem 'sass-rails', '~> 5.0'
# ↓ 変更
gem 'sassc-rails'
# gem 'chromedriver-helper'
# ↓ 変更
gem 'webdrivers'
개발이 Docker(linux)라면 Windows의 신세가 될 것은 없기 때문에, 이하는 삭제해 버립니다. 참고 기사
# 削除
# gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
루비 2.7을 사용하고 싶었지만 Puma를 시작할 때 경고가 많이 나오기 때문에 2.6을 사용하고 있습니다.
/usr/local/bundle/gems/activemodel-5.2.4.1/lib/active_model/translation.rb:67: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
보충 2
docker는 "경량"이라고 알려져 있지만, 여러 번 시도하고 의외로 디스크를 압박합니다. 때때로 불필요한 것은 삭제하는 것이 좋습니다. 다음은 개발 환경에서 빨리 삭제하는 경우의 예입니다.
$ docker ps -a | awk '{print $1}' | xargs docker rm
$ docker images | grep none | awk '{print $3}' | xargs docker rmi
2020.08.12 추가
다음 명령도 유용합니다 참고 기사
docker system prune
보충 3
원래는 rails 프로젝트는 railsapp 서브디렉토리에 맞추기 위해 만들었습니다만, heroku+github의 제휴와 궁합이 나빴기 때문에 프로젝트 바로 아래에 배치하도록 조정하고 있습니다.
관련 기사
Reference
이 문제에 관하여(docker-compose로 Rails5.2 개발 환경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lumbermill/items/f5d04035753c1ea4c3e1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)