[RUBY] [Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8

1. Zuallererst

Dies ist ein Memorandum-Artikel, da ich die Umgebung mit der Absicht erstellt habe, eine neue Anwendung mit Rails zu erstellen. Ich habe weniger als ein Jahr Erfahrung als Ingenieur und Rails. Bitte weisen Sie auf Fehler oder besseres Schreiben hin.

Betriebsumgebung

2. Bereiten Sie die erforderlichen Dateien vor

Erstellen Sie zunächst ein beliebiges Verzeichnis und eine Datei.

mkdir rails_app
cd rails_app

#Erstellen Sie mehrere Dateien gleichzeitig
touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh,.env}

Dockerfile

Dockerfile


FROM ruby:2.7.2

ENV LANG C.UTF-8
ENV APP_ROOT /app

# install required libraries
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 --no-install-recommends \
  build-essential \
  nodejs \
  yarn && \
  apt-get clean && \
  rm --recursive --force /var/lib/apt/lists/*

# create working directory
RUN mkdir $APP_ROOT
WORKDIR $APP_ROOT

# bundle install
COPY Gemfile $APP_ROOT/Gemfile
COPY Gemfile.lock $APP_ROOT/Gemfile.lock
RUN bundle install --jobs 4 --retry 3

# create app in container
COPY . $APP_ROOT

# script to be executed every time the container starts
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

# Start the main process
CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

docker-compose.yml


version: '3.7'
services:
  db:
    image: mysql:8.0.20
    volumes:
      - mysql:/var/lib/mysql:delegated
    ports:
      - '3307:3306'
    command: --default-authentication-plugin=mysql_native_password
    env_file: .env

  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    tty: true
    stdin_open: true
    env_file: .env
    depends_on:
      - db
    ports:
      - '3000:3000'
    volumes:
      - .:/app:cached
      - bundle:/usr/local/bundle:delegated
      - node_modules:/app/node_modules
      - tmp-data:/app/tmp/sockets

volumes:
  mysql:
  bundle:
  node_modules:
  tmp-data:

.env

.env


MYSQL_ROOT_PASSWORD=password
TZ=Japan

Gemfile

Gemfile


source 'https://rubygems.org'
gem 'rails', '6.0.3'

Gemfile.lock

Gemfile.lock


#Leer lassen

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 "$@"

3. Erstellen Sie ein Rails-Projekt

Nachdem Sie die benötigten Dateien erstellt haben, führen Sie den Befehl "Rails New" aus.

docker-compose run --rm web rails new . --force --no-deps --database=mysql --skip-turbolinks --skip-test
docker-compose run --rm web bin/rails webpacker:install

Ich denke, Sie können Optionen frei hinzufügen, aber es ist einfacher, hier verschiedene Optionen anzugeben.

4. Bearbeiten Sie database.yml

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: rails_app_dev

test:
  <<: *default
  database: rails_app_test

production:
  <<: *default
  database: rails_app_prd
  username: app
  password: hoge

Beschreiben Sie das Passwort usw., damit Sie mit den in docker-compose.yml festgelegten Informationen darauf zugreifen können. Host ist ein db Container.

5. Erstellen Sie das Docker-Image und erstellen Sie eine Datenbank

docker-compose build
docker-compose run web bin/rails db:create
  1. Yay! You’re on Rails!
docker-compose up -d

Starten Sie den Container, und wenn der erste Rails-Bildschirm angezeigt wird, sind Sie fertig. rails_new.png

Referenz

Recommended Posts

[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
Aufbau der Rails Docker-Umgebung
Schienenumgebungskonstruktion mit Docker (persönliche Apokalypse)
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Konstruktionsnotiz für die MySQL 5.7 (Docker) -Umgebung
[Rails / MySQL] Aufbau einer Mac-Umgebung
Konstruktionsverfahren für die Docker-Umgebung "Rails 6 x MySQL 8" für die gemeinsame Nutzung mit Teams
Erstellen Sie die Node.js-Umgebung mit Docker Compose
Umgebungsbau mit Docker für Anfänger
Rails5 + MySQL8.0 + Top-Level-Volume-Umgebungskonstruktion mit Docker-Compose
Konstruktionsverfahren für Rails on Docker-Umgebungen
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
SQL-Anweisungslernen ~ Umgebungskonstruktion ~ Docker + MySQL
Aufbau einer GPU-Umgebung mit Docker [Version Oktober 2020]
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Bearbeiten Sie MySQL mit Befehlen in der Docker-Umgebung
Rails & React & Webpacker & MySQL Environment Konstruktionshandbuch
So erstellen Sie eine Rails 6-Umgebung mit Docker
Erstellen einer Entwicklungsumgebung für Ruby on Rails mit Docker + VSCode (Remote Container)
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
[Rails] So erstellen Sie eine Umgebung mit Docker
Konstruktions- und Entwicklungsverfahren für lokale WordPress-Umgebungen mit Docker
Ich habe eine Rails-Umgebung mit Docker und MySQL erstellt, aber ich war krank
[Umgebungskonstruktion] Rails + MySQL + Docker (Anfänger können es auch in 30 Minuten verwenden!)
[Rails API x Docker] Einfache Umgebungskonstruktion mit Shell- und Funktionsprüfung mit Flutter
Aufbau der Rails6-Entwicklungsumgebung [Mac]
Rails Engineer Environment Construction Ruby2.7.1
Rails6 (MySQL, Ubuntu-Umgebung, Cloud9)
Schienen Umgebungsbau Schienen5.2.1 ruby2.5.1 Catalina
Führen Sie Rails immer im Docker aus
Redmine (Docker) Umgebungskonstruktionsnotiz
Erstellen einer Docker-Umgebung mit WSL
Aufbau der Docker x Spring Boot-Umgebung
[Docker] postgres, pgadmin4-Umgebungskonstruktion
[Docker] Wird immer mit Docker + Rails verwendet
Konstruktionshandbuch für eine stabile Entwicklungsumgebung für "Rails6" mit "Docker-compose"
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Erstellen Sie mit Docker eine Vue3-Umgebung!
Erstellen Sie mit Docker eine lokale Couchbase-Umgebung
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.