Docker를 사용하여 Rails 환경 구축
입문
Docker를 사용하여 Rails 환경을 구축했습니다.
공식 환경에 가까운 환경에서 개발하는 연습을 하고 싶어서 이번에 Docker를 사용했습니다.
이 글은 Docker를 설치한 사람을 대상으로 작성되었습니다.
Docker 설치 방법은 입니다여기
단계 1
우선 뭐든지 할 수 있으니 목록을 만들어라!
예: rails_docker
단계 2
단계 1에서 만든 디렉토리에 다음 파일을 제공합니다.
・Dockerfile
Dockerfile은 Docker의 이미지를 만드는 파일입니다.이번에는 Rails 환경을 구축하기 때문에 Rails 응용 프로그램을 사용하는 데 필요한 파일 등을 정의해야 합니다.
[참조]Docker 시작(처음)~ Docker가 뭐야, 뭐가 좋아~
Gemfile
Gem이 설치된 파일 정의
・Gemfile.lock
・docker-compose.yml
여러 컨테이너 시작
$ ls
Dockerfile
Gemfile
docker-compose.yml
Gemfile.lock
단계 3
이제 Dockerfile을 정의합니다.
FROM ruby:2.7.0
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app
・ 여기에서 루비의 버전을 지정합니다.· RUN Rails 액션을 설치하는 데 필요한 패키지입니다.
・ RUN 앱 디렉토리 만들기
・WORKDIR 작업 디렉토리 설정
・ COPY Gemfile과 Gemfile.lock 복사
・ Run bundle install 설정, 애플리케이션 실행
・ COPY Docker 파일의 내용을 모두 컨테이너에 복사
4단계(Gemflie, Gemfile.lock)
Gemfile 및 Gemfilelock의 내용입니다.
Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 5.2.4'
Gemfile.lock
Gemfile.lockは空で大丈夫です。
단계 5(docker-compose.yml 설정)
docker-compose.yml
version: '3'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
db-volume:
パラメータ名
説明
version
docker-compose.ymlのバージョン
web
Railsのコンテナの定義
build
.はdocker-compose.ymlと同じディレクトリ内という意味で、buildでdockerのイメージを作成します。
command
railsサーバ起動。デフォルト値を設定してます。
volumes
ディレクトリを/appディレクトリにマウント設定。これでpc上で変更を加えても即座にコンテナ上に変更が反映されます。
ports
公開用のポート。(ホスト側:コンテナ側)
depends_on
サービスの依存関係を指定。dbと設定することで、先にdbを起動できます。
tty
コンテナに擬似TTYの割り当
stdin_open
コンテナの標準入力をオープンしたままにします。
db
MySQLサーバコンテナの定義
image
使用するdbのイメージ
volumes
ディレクトリを/var/lib/mysqlにマウント設定。これでDBのデータなどを残せます。
environment
環境変数の保持
단계 6
ファイルの定義が終わりましたので、Railsのプロジェクトを起動します。
$ cd rails_docker
$ docker-compose run web rails new . --force --database=mysql
docker-compose run webでwebサービスをコンテナで実行します。
正常にプロジェクトが作成できたら、新規で作成したファイルをコンテナに取り込むために再度buildします。
$ docker-compose build
次にconfin/database.ymlを編集します。
編集する箇所としてはpasswordとhostの部分を以下のように設定します。
confin/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
password: password
host: db
development:
<<: *default
database: app_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: app_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: app_production
username: app
password: <%= ENV['APP_DATABASE_PASSWORD'] %>
保存後次のコマンドを入力します。
$ docker-compose up
これでコンテナが起動します。
ただし、まだ開発用のDBを作成していないので下記コマンドを打ちます。
$ docker-compose run web bundle exec rake db:create
DBを作成したら以下のコマンドを打ち
$ docker-compose up
ためしにhttp://localhost:3000/
を打ち込んで見ましょう。
まだ何も記述をしていないので初期画面がでますが、これで無事にDockerを使ってRailsの環境を構築ができました!!
<참조>
今回は下記記事を参考にしました。
ありがとうございました。
https://knowledge.sakura.ad.jp/4786/
http://docs.docker.jp/compose/toc.html
https://qiita.com/kodai_0122/items/795438d738386c2c1966
Reference
이 문제에 관하여(Docker를 사용하여 Rails 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nyan_tech_24/items/2d1b740c22bde8719e4e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)