[Rails] Rails6.0x Docker x MySQL을 사용하여 환경 구축
입문
Rails 6.0x Docker로 환경을 구축하고 싶을 때 까다로울 줄 몰랐기 때문에 필기로 투고했습니다.
이것은 공부하고 있는 초보자의 보도다.만약 잘못이 있다면 기쁨을 지적하세요!
다양한 버전
다음 버전의 동작을 확인했습니다.
단계
공식 문서에 따라 다음과 같은 절차에 따라 구축한다.
또한 문서에서 rails5계로 진행되기 때문에 rails6계로 적당히 교체합니다.
1. 각종 서류 준비
임의의 디렉터리를 만들고 그 아래에
Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
entrypoint.sh
.$ mkdir myapp
$ cd myapp
각 파일의 내용은 다음과 같습니다.Dockerfile
Dockerfile
FROM ruby:2.6
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 \
&& apt-get update -qq \
&& apt-get install -y nodejs yarn \
&& mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
webpacker
로 변경합니다.참고: Rails Guide webpacker
배치에 필요한 패키지 관리자yarn
를 설치하기 위해 웹 페이지 정보 작성RUN
명령을 참고하십시오.docker-compose.yml
docker-compose.yml
version: '3'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
ports:
- '3306:3306'
command: --default-authentication-plugin=mysql_native_password
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
stdin_open: true
tty: true
volumes:
mysql-data:
driver: local
--default-authentication-plugin=mysql_native_password
인증 방법을 mysql_native_password
로 변경해야 합니다.(자세한 상황은 아직...)참고: MySQL 릴리즈 노트
참고: Qiita 기사
Gemfile
Gemfile
source 'https://rubygems.org'
gem 'rails', '~>6'
Gemfile.lock
# 何も記述しない空ファイルのままでOK
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 "$@"
2. rails new로 어플리케이션 만들기
5개의 파일을 준비한 후 터미널에서 다음 명령을 실행합니다.
$ docker-compose run web rails new . --force --no-deps --database=mysql --skip-test --webpacker
--skip-test
가져오기 옵션을 위해 Minitest를 건너뜁니다.--webpacker
웹Packer 설치를 선택합니다.3. 이미지 구축
rails new
에서 각종 파일 제작, 웹 패커 설치를 마친 후 Gemfile
업데이트되어 이미지를 구축합니다.$ docker-compose build
4. database.yml 설정 및 데이터베이스 연결
편집
rails new
에서 작성된 config/database.yml
.config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV.fetch("MYSQL_USERNAME", "root") %>
password: <%= ENV.fetch("MYSQL_PASSWORD", "password") %>
host: <%= ENV.fetch("MYSQL_HOST", "db") %>
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
username: myapp
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
데이터베이스를 만듭니다.$ docker-compose run web rake db:create
5. 용기 시작
다음 명령을 사용하여 컨테이너를 시작합니다.
$ docker-compose up
localhost:3000
예제 페이지가 표시됩니다.마지막
이렇게 하면 환경 구축이 순조롭게 완성될 것이다.
Dockerfile 같은 것은 더 좋은 쓰기 방법이 있을 수 있지만, 어쨌든 먼저 움직이면 된다.
참고 자료
Reference
이 문제에 관하여([Rails] Rails6.0x Docker x MySQL을 사용하여 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nsy_13/items/9fbc929f173984c30b5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)