【Rails】기존의 Rails6 프로젝트에 Docker를 도입해 본다
소개
기존 Rails 프로젝트를 Docker에 올려 갑니다.
초학자에 의한 기사이므로 실수 등 있으시면 지적하실 수 있으면 다행입니다.
※본 기사는 개발 환경만의 도입을 대상으로 하고 있습니다.
참고
Docker가 무엇인지 전혀 모른다! 라고 하는 분은 우선은 아래의 기사를 참고로 Docker를 접해 봐 주세요.
Docker를 Mac에 설치
이 기사도 손쉽게 Docker를 살짝 이해하는데 추천합니다.
Docker에 대해 가능한 한 이해하기 쉽습니다.
환경
목차
필요한 파일 만들기
필요한 파일은 다음 5개입니다. rails new를 했을 때에 자동 생성되는 파일도 있으므로 필요한 것만 작성해 갑시다.
파일 구성
既存のアプリケーション名
└── app
├── Dockerfile # 作成
├── docker-compose.yml # 作成
├── Gemfile
├── Gemfile.lock
├── config
└──database.yml
만든 파일 편집
Dockerfile
Dockerfile
FROM ruby:2.6.5 #自身のrubyバージョンを指定 (ruby -v)
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
RUN apt-get update && apt-get install -y --no-install-recommends\
nodejs \
yarn \
mariadb-client \
build-essential \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /myproject
COPY Gemfile /myproject/Gemfile
COPY Gemfile.lock /myproject/Gemfile.lock
RUN gem install bundler
RUN bundle install
RUN yarn install --check-files
COPY . /myproject
Rails6에서 webpacker가 표준이 되었기 때문에 yarn의 설치가 필요하게 됩니다.
Docker Hub 에서 확인하면 ruby의 이미지는 데비안계이므로 yarn 공식 문서 에 기재되어 있는 OS 마다의 인스톨 방법을 참고로 기술해 갑니다.
덧붙여서, yarn의 공식 문서는 일본어 표시의 그대로라고 왠지 OS의 선택사항 안에 Mac과 Windows 밖에 표시해 주므로 영어 표시로 전환해 확인합시다.
일본어 표시
영어 표시
docker-compose.yml
docker-compose.yml
version: '3'
services:
db: #データベースのコンテナ作成
image: mysql:5.7 #自身のmysqlバージョンを指定 (mysql --version)
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
ports:
- '3306:3306'
volumes:
- mysql-data:/var/lib/mysql
environment:
MYSQL_DATABASE: myapp_development #プロジェクト名_development
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: root
MYSQL_PASSWORD: password
web: #アプリケーションのコンテナ作成
build:
context: .
dockerfile: Dockerfile
command: bundle exec rails s -p 3000 -b '0.0.0.0'
tty: true
stdin_open: true
depends_on:
- db
ports:
- "3000:3000"
volumes:
- .:/myproject
volumes: #dbを永続化するための記述
mysql-data:
Gemfile
Gemfile
source 'https://rubygems.org'
gem 'rails', '~>6.0.0'
기존 어플리케이션의 경우 이 기술은 이미 있을 것입니다만 만약을 위해 확인해 둡시다.
database.yml
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root #docker-compose.ymlで指定したユーザー名
password: password #docker-compose.ymlで指定したパスワード
development:
<<: *default
database: myapp_development #プロジェクト名_development
host: db #docker-compose.ymlでデータベースのコンテナ作成部分で指定したservice名
test:
<<: *default
database: myapp_test #プロジェクト名_test
host: db #docker-compose.ymlでデータベースのコンテナ作成部分で指定したservice名
응용 프로그램 컨테이너에서 데이터베이스 컨테이너에 연결하기위한 설정을 설명합니다.
보안 측면을 신경 쓰려면 username과 password에 환경 변수를 설정합시다. 이번에는 개발 환경만이라고 하는 것도 있어 설정하고 있지 않습니다.
컨테이너 시작
터미널
cd myapp
docker-compose build #コンテナを建てる
docker-compose up -d #コンテナ起動(-dオプションをつけることでバックグラウンドで実行)
이제 localhost:3000 에 액세스하면 페이지가 표시됩니다◎
터미널
docker-compose logs -f
로 실시간으로 로그를 확인할 수 있으므로 오류 원인을 찾아 해결합시다.
터미널
docker-compose down
마지막으로
구현에 생각의 외수간 찍었으므로 비망록적으로 기사로 해 보았습니다.
누군가의 참고가 되면 다행입니다.
Reference
이 문제에 관하여(【Rails】기존의 Rails6 프로젝트에 Docker를 도입해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mmr__p/items/5d174477294017a8c788텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)