Docker를 사용하여 Rails6 환경을 구축하는 방법
10654 단어 MySQLdocker-compose도커Rails
각각의 파일이나 단어의 의미등의 해설은 하고 있지 않으므로, 자세한 해설은 Docker를 사용하여 Ruby on Rails의 환경을 구축하는 방법 (Docker 초학자 용) 를 봐 주세요.
(※ Rails5의 환경 구축 방법입니다)
환경
전제
Docker
및 Docker compose
설치를 완료하십시오 myapp
부분은 자신의 응용 프로그램 이름으로 바꿉니다 애플리케이션 작업 디렉토리 만들기
mkdir
에서 작업 디렉토리를 만듭니다.$ mkdir myapp
필요한 파일 준비
파일 구성은 다음과 같습니다.
myapp
|-- Dockerfile
|-- docker-compose.yml
|-- Gemfile
|-- Gemfile.lock
그러면 방금 만든 디렉토리 안에 다음의 각 파일을 작성해 갑니다.
① Gemfile
Gemfile
source 'https://rubygems.org'
gem 'rails', '>= 6.1.0'
② Gemfile.lock
Gemfile.lock
Gemfile.lock
의 내용은 하늘에서 OK입니다.
③ Dockerfile
DockerfileFROM ruby:3.0.1
RUN 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
# yarnをインストールするための準備
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs \
default-mysql-client \
yarn \ # yarnをインストール
vim
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
Rails6에 webpacker가 탑재되어 yarn의 설치가 필요하게 되었습니다.
④ docker-compose.yml
docker-compose.ymlversion: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_USER: user
MYSQL_ROOT_PASSWORD: pass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
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
volumes:
mysql_data:
rails new 실행
$ docker-compose run web rails new . --force --database=mysql
응용 프로그램의 작업 디렉터리로 이동하여 위의 docker-compose run
명령으로 rails new
를 실행합니다.
(. Rails5 때 은 --skip-bundle
의 옵션을 붙이고, bundle install
를 건너뛰고 있었습니다만, 이번은 webpacker
의 인스톨을 해야 하기 때문에 bundle install
는 스킵 하지 않습니다.)
docker-compose build 실행
$ docker-compose build
rails new
에서 Gemfile
가 업데이트되었으므로 bundle install
를 위해 docker-compose build
를 실행합니다.
database.yml 편집
/config/database.yml# MySQL. Versions 5.1.10 and up are supported.
#
# Install the MySQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
# 以下2行を編集
password: pass
host: db
development:
<<: *default
database: myapp_development
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: myapp_test
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database: myapp_production
username: myapp
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
password:
와 host:
를 편집합니다.password:
에는 docker-compose.yml
의 MYSQL_ROOT_PASSWORD:
에 쓴 암호를 기재합니다.host:
에는 db
라고 기재합니다.
docker-compose up -d로 컨테이너 시작
$ docker-compose up -d
데이터베이스 만들기
다음 명령으로 데이터베이스를 작성하십시오.
$ docker-compose exec web rails db:create
localhost:3000 방문
localhost:3000
로 이동하여 다음 페이지가 표시되면 Docker로 Rails6 환경을 빌드 할 수 있습니다.
그 후의 개발 방법은 여기 를 참고해 주세요.
참고
Docker를 사용하여 Rails6 환경을 구축해보십시오.
Reference
이 문제에 관하여(Docker를 사용하여 Rails6 환경을 구축하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yusuke_Hoirta/items/1052886132d29fb83a65텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)