【비망록】Rails+MySQL의 환경 구축을 Docker로 행한다
전제
로컬 환경
버전
기타
프로젝트 디렉터리 준비
$ mkdir myapp
$ cd myapp
파일 작성
$ touch docker-compose.yml Dockerfile Gemfile Gemfile.lock
각 파일 편집
$ mkdir myapp
$ cd myapp
$ touch docker-compose.yml Dockerfile Gemfile Gemfile.lock
각 파일 편집
DB_NAME=myapp
DB_TEST_NAME=myapp_test
DB_USER=admin
DB_PASS=admin
DB_ROOT_PASS=password
TZ=Asia/Tokyo
version: "3"
services:
app:
build: .
volumes:
- .:/var/www/myapp
command: rails s -p 8000 -b '0.0.0.0'
ports:
- 13000:8000
links:
- db
- db-test
db:
image: mysql:5.7
environment:
- MYSQL_DATABASE=${DB_NAME}
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PASS}
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS}
- TZ=${TZ}
ports:
- 23306:3306
db-test:
image: mysql:5.7
environment:
- MYSQL_DATABASE=${DB_TEST_NAME}
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PASS}
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS}
- TZ=${TZ}
ports:
- 33306:3306
FROM ruby:2.6.3-alpine3.10
RUN apk --update --no-cache add git \
tzdata \
libxml2-dev \
curl-dev \
make \
gcc \
libc-dev \
g++ \
mariadb-dev \
linux-headers \
nodejs
ENV APP_ROOT /var/www/myapp
WORKDIR $APP_ROOT
COPY ./Gemfile $APP_ROOT/Gemfile
COPY ./Gemfile.lock $APP_ROOT/Gemfile.lock
RUN bundle install && \
apk update
COPY . $APP_ROOT
RUN rm -rf /usr/local/bundle/cache/* ${APP_ROOT}/vendor/bundle/cache/*
source 'https://rubygems.org'
gem 'rails', '5.2.2'
.env.example을 복사하여 .env 만들기
$ cp .env.example .env
// コピー後、値をPJに応じて変更
애플리케이션 작성
$ docker-compose run app rails new . --force --no-deps --database=mysql --skip-bundle
$ cp .env.example .env
// コピー後、値をPJに応じて変更
$ docker-compose run app rails new . --force --no-deps --database=mysql --skip-bundle
$ tree -L 1 .
.
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── app
├── bin
├── config
├── config.ru
├── db
├── docker-compose.yml
├── lib
├── log
├── package.json
├── public
├── storage
├── test
├── tmp
└── vendor
config/database.yml 편집
$ vi config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: admin # docker-compose.ymlの設定と合わせる
password: admin # docker-compose.ymlの設定と合わせる
host: db # docker-compose.ymlのサービス名と合わせる
development:
<<: *default
database: myapp # docker-compose.ymlの設定と合わせる
host: db # docker-compose.ymlの設定と合わせる
(中略)
test:
<<: *default
database: myapp_test # docker-compose.ymlの設定と合わせる
host: db-test # docker-compose.ymlの設定と合わせる
(中略)
production:
<<: *default
database: myapp_production
username: admin # docker-compose.ymlの設定と合わせる
password: <%= ENV['TESTAPP_DATABASE_PASSWORD'] %>
docker-compose
$ docker-compose build
$ docker-compose up -d
$ docker-compose exec app ash
$ rails -v // バージョンが表示されれば成功
$ rails db:create
화면 확인
$ vi config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: admin # docker-compose.ymlの設定と合わせる
password: admin # docker-compose.ymlの設定と合わせる
host: db # docker-compose.ymlのサービス名と合わせる
development:
<<: *default
database: myapp # docker-compose.ymlの設定と合わせる
host: db # docker-compose.ymlの設定と合わせる
(中略)
test:
<<: *default
database: myapp_test # docker-compose.ymlの設定と合わせる
host: db-test # docker-compose.ymlの設定と合わせる
(中略)
production:
<<: *default
database: myapp_production
username: admin # docker-compose.ymlの設定と合わせる
password: <%= ENV['TESTAPP_DATABASE_PASSWORD'] %>
$ docker-compose build
$ docker-compose up -d
$ docker-compose exec app ash
$ rails -v // バージョンが表示されれば成功
$ rails db:create
화면 확인
Reference
이 문제에 관하여(【비망록】Rails+MySQL의 환경 구축을 Docker로 행한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kaba_farm/items/4c0a69a064969b824b9d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)