Docker로 Rails6 환경을 구축하는 방법
6564 단어 Rails6webpackPostgreSQL도커루비
소개
Docker로 Rail6 환경을 구축하는 방법을 소개합니다.
Rails6에서 Webpack이 도입되었고 Rails5와 약간의 절차가 다르기 때문에 거기도 고려했습니다.
Docker 공식 페이지 Quickstart: Compose and Rails
환경
Docker3
Rails6.0.3
Ruby2.7.1
DB:PostgeSQL
1. 필요한 파일 만들기
이번에는 "myapp"라는 폴더에 환경을 구축합니다.
이름을 바꾸는 경우는 이후, "myapp"를 적절히 변경해 주세요.
지금부터 작성하는 파일 구성은 아래와 같습니다.
파일 구성
myapp
--Dockerfile
--Gemfile
--Gemfile.lock
--entrypoint.sh
--docker-compose.yml
먼저 폴더를 만듭니다.
터미널
$ mkdir myapp
$ cd myapp
1.1 Dockerfile
터미널
$ touch Dockerfile
Dockerfile
FROM ruby:2.7.1
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
## nodejsとyarnはwebpackをインストールする際に必要
# yarnパッケージ管理ツールをインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
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 && apt-get install -y yarn
# Node.jsをインストール
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \
apt-get install nodejs
RUN mkdir /myapp
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"]
1.2 Gemfile
터미널
$ touch Gemfile
Gemfile
source 'https://rubygems.org'
gem 'rails', '~>6'
1.3 Gemfile.lock
터미널
$ touch Gemfile.lock
여기에는 아무것도 기재하지 않습니다.
1.4 원 try 포인트. sh
터미널
$ touch 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 "$@"
1.5 docker-compose.yml
터미널
$ touch docker-compose.yml
docker-compose.yml
version: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
#######追加#########################
environment:
POSTGRES_HOST_AUTH_METHOD: 'trust'
###################################
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
2. 프로젝트 빌드
2.1 rails new
터미널
$ docker-compose run web rails new . --force --no-deps --database=postgresql --skip-bundle
명령 옵션 정보
--force
: 파일이 존재해도 덮어쓰기--no-deps
: 링크된 서비스를 시작하지 않음--database=postgresql
:DB는 PostgreSQL을 지정--skip-bundle
:bundle install은 건너뜁니다.2.2 docker-compose build
새롭게 Gemfile이 작성되었으므로, bundle install하기 위해서 이하의 커멘드 사용합니다.
터미널
$ docker-compose build
2.3 DB에 대한 연결 설정 변경
config/database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
#####追加#####
host: db
username: postgres
passowrd:
#############
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
username: myapp
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
2.4 Docker 컨테이너 시작 확인
터미널
$ docker-compose up
컨테이너가 시작되어 서버에 연결되면 OK입니다.
아직 DB를 작성하지 않았으므로 다음과 같은 오류가 발생합니다.
2.5 DB 생성
서버에는 접속할 수 있었으므로 나머지는 DB 작성입니다.
Ctrl+C로 연결을 끊은 후,
터미널
#一度Dockerをストップさせる
$ docker-compose stop
$ docker-compose down
#DB作成
$ docker-compose run web rake db:create
#再度Dockerを立ち上げる
$ docker-compose up
3. 컨테이너 & 서버가 시작되었는지 확인
http://localhost:3000/ 에 접속하면 무사히 기동하고 있는 것을 확인할 수 있습니다.
버전은 설정한 것처럼 Rails6, Ruby2.7.1입니다.
기타
Docker 내에서 개발할 때는 Docker 명령을 사용해야 합니다.
$ docker-compose run web bundle exec rails コマンド
예
$ docker-compose run web bundle exec rails g model User
$ docker-compose run web bundle exec rails g controller Homepages index
$ docker-compose run web bundle exec rails g rspec:install
참고
Docker 공식 페이지 Quickstart: Compose and Rails
Docker로 Ruby on Rails의 환경 구축을 실시하기 위한 스텝【Rails 6 대응】
Rails6의 개발 환경을 Docker로 구축하려고하면 도하마한 건
Postgres의 DockerImage에 변경 사항이있어 시작할 수 없게 된 이야기
[Rails] ActiveRecord::NoDatabaseError [Docker]
Reference
이 문제에 관하여(Docker로 Rails6 환경을 구축하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shungo_m/items/fd1ab99fbe76d39e456c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)