Docker 및 IntelliJ Remote SDK로 Ruby on Rails 개발 환경 완료
컨디션
도구 라이브러리
릴리즈
MacOS
Catalina
Ruby
docker hub ruby: 2.7
Ruby on Rails
6.1
IntelliJ
2020.3
Docker Desktop
3.1.0
컨텐트
하다
생성
docker-compose.yml
및 샘플 항목 전송 하지 않다
docker-compose.yml 제작 후 rails new 샘플 프로젝트
샘플 프로젝트를 준비하기 위해서는 즉시 루비와 레이스가 필요합니다.공식적인 절차를 참고하면서 진행합시다.
Define the Project
먼저 프로젝트를 만들려는 빈 디렉토리에서 Docker file을 준비합니다.이 일대는 VS코드에서 진행됐습니다.
Dockerfile
FROM ruby:2.7
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - &&\
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - &&\
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list &&\
apt-get update -qq && apt-get install -y nodejs yarn postgresql-client
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
ENV
와 RUN apt-get
부분에 설치yarn
처리가 추가되었습니다.Rails6 에서 애플리케이션을 시작할 때 필요할 수 있습니다.다음 정거장.Dcoker 용기를 제작할 때는 본체 쪽 젬file을 당겨 Rails를 설치하는 동작처럼 제작
Gemfile
과 빈 것Gemfiile.lock
을 만든다.Gemfile
source 'https://rubygems.org'
gem 'rails', '~>6'
touch Gemfile.lock
entrypoint.sh
도 필요할 것 같다.entrypoint.sh
#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
마지막docker-compose.yml
.공식적인 내용을 따르다.docker-compose.yml
version: "3.9"
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
이 상태docker-compose run web rails new
에서 샘플 프로젝트를 생성합니다.docker-compose run --no-deps web rails new . --force --database=postgresql
명령을 실행하는 디렉토리에 Rubbyon Rails의 파일 그룹을 생성하면 됩니다.IntelliJ를 사용하여 Docker의 Ruby SDK 식별
Rubby SDK를 사용하기 위해 IntelliJ의 SDKRemote를 구성하는 Ruby 인터페이스를 사용하여 설정합니다.
メニューバー > File > New > New Project
새 프로젝트를 만듭니다.이전 절차에 따라 Rails의 파일 클러스터를 만들었지만, IntelliJ는'Rails의 프로젝트다'라는 것을 깨닫기 위해 기존 프로젝트를 여는 것이 아니라 이 절차를 밟았다.여기서부터 아래의 그림처럼 선택하십시오
Project SDK > Add Ruby SDK > New Remote...
.원격 SDK 추가
또한 Rubby 해석기의 설정 화면은 다음과 같습니다.
docker-compose.yml
web
<empty>
ruby
Docker Compose
부터 설정하면 IntelliJ는 방금 설치한 rails gem을 사용하기 때문에 편리합니다.Docker
로도 해석기를 구성할 수 있지만 곧 プロジェクトの構成に必要だから rails gem をインストールしてね
의 정보가 표시됩니다.설정이 끝나면 루비 SDK와 라일스가 설정한 상태가 되기 때문에
Next
로 제작된 프로젝트명과 위치를 설정한다.이제 프로젝트를 시작합니다.또한 기존 Rails 설정을 덮어쓰느냐는 질문에 "덮어쓰지 않기"는 OK.마지막으로 두 번
Ctrl
을 눌러 Run Anythngbundle install
을 호출합니다.이 동작을 실행하면 docker-compose
루비가 IntelliJ 측에gem을 설치합니다.그 결과 편집기의 코드 점프와require
를 해결할 수 있었다.이렇게 되면 로컬 기기에 루비를 설치하지 않고 IntelliJ로 Rails 앱을 개발할 수 있게 된다.
Rails 애플리케이션 시작
본론에서 벗어났지만 어렵게 이 지경까지 해냈으니 독커 본가Connect the database부터 앱을 시작하는 곳까지 한번 해보자.
config/database.yml
를 다음으로 덮어씁니다.config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
Docker를 시작합니다.docker-compose up
Webpacker configuration file not found와 같은 오류가 발생할 수 있으므로 다음과 같이 실행합니다.여기 야인이 필요해.docker-compose run --no-deps web bundler exec rails webpacker:install
설치 후 부팅됩니다.docker-compose up
정상적으로 작동할 수 있을 거예요.데이터베이스를 만드는 프로그램도 있기 때문에 다른 터미널에서 실행합니다.docker-compose run web bundle exec rake db:create
localhost:3000
에 시작 신호가 표시되면 성공합니다.총결산
Dodcker의 Rails6을 IntelliJ를 통해 개발할 수 있도록 리모트 SDK가 추가됐다.이렇게 하면 Mac에 Ruby를 설치하지 않아도 일을 할 수 있다.또한 Docker가 Rails6을 사용할 때 부족한 공식 프로그램을 수정하여 시작할 수 있는 부분을 보여 주었다.참고가 됐으면 좋겠어요.
소스 코드
cm-wada-yusuke/rails6-docker-compose-sample
Reference
이 문제에 관하여(Docker 및 IntelliJ Remote SDK로 Ruby on Rails 개발 환경 완료), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/waddy/articles/ruby-remote-container텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)