[RUBY] [Erste Umgebungskonstruktion] Ich habe versucht, eine Rails6 + MySQL8.0 + Docker-Umgebung unter Windows 10 zu erstellen.

Einführung

Ich habe versucht, eine Rails6- und Docker-Umgebung zu erstellen, daher werde ich sie hier als Memorandum belassen. Qiita Dies ist mein erster Beitrag, und da ich Anfänger bin, denke ich, dass es verschiedene Punkte gibt, die nicht erreicht werden können. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.

Umgebung

Referenz Erstellen Sie eine Rails6 + MySQL-Umgebung mit Docker-Compose [Rails-Umgebungskonstruktion] Umgebungskonstruktion mit Docker + Rails + MySQL (auch Anfänger können in 30 Minuten fertig sein!) [ENTRYPOINT ist "immer ausführen", CMD ist "(Standard-) Argument"](https://pocketstudio.net/2020/01 / 31 / cmd-and-entrypoint /)

Es wurde in Bezug darauf durchgeführt.

Tor

Erstellen Sie die Umgebung und zeigen Sie den Rails-Startbildschirm an.

1. Installieren Sie Docker für Windows

https://hub.docker.com/ Gehen Sie zu und installieren Sie.

2. Schreiben Sie eine Docker-Datei

$ mkdir ~/Desktop/docker-tutrial/Rails_app
$ cd  ~/Desktop/docker-tutrial/Rails_app
$ code Dockerfile

Öffnen Sie ein Terminal, erstellen Sie ein Verzeichnis an einem beliebigen Ort und schreiben Sie `` `Dockerfile``` wie folgt. (Ich benutze vsCode.)

$Name der Codedatei

Dann startet vsCode und Sie können eine neue Datei schreiben. (VsCode muss vorab auf Ihrem PC installiert sein.)

FROM ruby:2.7
RUN apt-get update -qq && apt-get install -y nodejs yarnpkg
RUN ln -s /usr/bin/yarnpkg /usr/bin/yarn
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

# Add a 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"]

3. Beschreibung von Gemfile

source 'https://rubygems.org'
gem 'rails', '~>6'
$ touch Gemfile.lock

Schreiben Sie das erste `Gemfile und das leere `` Gemfile.lock```.

Vier. Beschreibung von entrypoint.sh

Einstiegspunkt als ENTRYPOINT in Dockerfile definiert.Beschreibe sh.



```shell

#!/bin/bash
set -e

# Remove a potentially pre-existing server.pid for Rails.
rm -f /app/tmp/pids/server.pid

# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"

Fünf. Beschreibung von docker-compose.yml

version: '3'
services:
  db:
    image: mysql:8.0
    volumes:
      - ./tmp/db:/var/lib/mysql
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=1
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db

MySQL verwendet Version 8.0

Durch Festlegen von ** MYSQL_ALLOW_EMPTY_PASSWORD ** können Sie eine Verbindung als root herstellen, auch wenn das Kennwort leer ist.

6. Do Rails neu und doocker-compose Build.

$ docker-compose run web bundle exec rails new . --force --database=mysql

Überschreiben Sie die vorhandene Datei mit ** --force ** und geben Sie MySQL mit ** --database ** an. Nachdem Sie die übliche Rails-Dateigruppe haben, erstellen Sie sie.

$ docker-compose build

7. Ändern Sie den DB-Hostnamen und erstellen Sie Docker.

Da Sie keine Verbindung zur Datenbank herstellen können, Ersetzen Sie ** host ** in ** config / database.yml ** durch ** db **.


default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  host: db
development:
  <<: *default
  database: app_development
test:
  <<: *default
  database: app_test

** db ** ist der Containername.

Sobald dies erledigt ist, bauen Sie erneut und machen Sie ** Docker-Compose Up **. Wenn Sie mit ** localhost: 3000 ** auf Rails zugreifen, erhalten Sie ** ActiveRecord :: NoDatabaseError **.

Dies liegt daran, dass der Webcontainer die Authentifizierungsmethode ** caching_sha2_password ** von mysql 8.0 nicht unterstützt. Führen Sie die folgenden Schritte aus, um zur alten Authentifizierungsmethode ** mysql_native_password ** zu wechseln.

8. Änderung der MySQL-Authentifizierungsmethode

Geben Sie zunächst den DB-Container ein und starten Sie bash.

$ docker-compose exec db bash

Stellen Sie dann eine Verbindung mit dem Befehl mysql her.


# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.18 MySQL Community Server - GPL

...

Sie können die Benutzerliste und ihre Authentifizierungsmethode anzeigen, indem Sie die folgende Abfrage senden.


mysql> select User,Host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | %         | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

Ändern Sie ** caching_sha2_password ** im Plugin ganz rechts in ** mysql_native_password **. Verwenden Sie ** ALTER USER **, um diesmal die Benutzereinstellungen für das Ziel ** root @% ** zu ändern.


ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '';
-- Query OK, 0 rows affected (0.02 sec)

Nach der veränderung

mysql> select User,Host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | %         | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

9. Rufen Sie den Rails-Startbildschirm auf.

Wenn Sie ** db: vorbereiten ** und eine Datenbank erstellen, können Sie auf den Rails-Startbildschirm zugreifen. Rails.png

Recommended Posts

[Erste Umgebungskonstruktion] Ich habe versucht, eine Rails6 + MySQL8.0 + Docker-Umgebung unter Windows 10 zu erstellen.
[Rails 6.0, Docker] Ich habe versucht, die Konstruktion der Docker-Umgebung und die zum Erstellen eines Portfolios erforderlichen Befehle zusammenzufassen
Ich habe versucht, eine React.js x TypeScript x Material-Benutzeroberfläche in einer Docker-Umgebung zu erstellen
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine Spring MVC-Entwicklungsumgebung auf einem Mac zu erstellen
Konstruktionsverfahren für Rails on Docker-Umgebungen
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
[Rails] Ich habe versucht, eine Mini-App mit FullCalendar zu erstellen
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
Ich habe eine Rails-Umgebung mit Docker und MySQL erstellt, aber ich war krank
Lassen Sie uns Docker unter Windows 10 installieren und eine Überprüfungsumgebung für CentOS 8 erstellen!
[Aufbau der Rails & Docker & MySQL-Umgebung] Ich habe den Container gestartet, kann aber MySQL nicht finden ...?
01. Ich habe versucht, eine Umgebung mit SpringBoot + IntelliJ + MySQL (MyBatis) (Windows 10) zu erstellen.
[Docker] So erstellen Sie eine virtuelle Umgebung für Rails- und Nuxt.js-Apps
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
Ich habe versucht, das auf Vagrant erstellte Portfolio in die Entwicklungsumgebung von Docker zu migrieren
Ich habe versucht, eine LINE-Klon-App zu erstellen
[Persönliches Memo] Ruby on Rails-Umgebungskonstruktion (Windows)
Aufbau der Rails Docker-Umgebung
Ich habe versucht, eine Anwendung für maschinelles Lernen mit Dash (+ Docker) Teil 1 ~ Umgebungskonstruktion und Funktionsprüfung ~ zu erstellen
Als ich versuchte, mit Docker eine Umgebung für PHP7.4 + Apache + MySQL zu erstellen, blieb ich stecken [Windows & Mac]
Ich habe versucht, ein Portfolio mit AWS, Docker, CircleCI, Laravel [mit Referenzlink] zu erstellen.
Erstellen Sie eine Entwicklungsumgebung, um Ruby on Jets + React-Apps mit Docker zu erstellen
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Bereitstellen auf Ruby on Rails Elastische Bohnenstange (Umgebungskonstruktion)
Rails6 Ich habe versucht, Docker in eine vorhandene Anwendung einzuführen
[Ruby on Rails] Von der MySQL-Konstruktion zum Datenbankwechsel
Ich habe versucht, node-jt400 (Umgebungskonstruktion)
Konstruktionsnotiz für die MySQL 5.7 (Docker) -Umgebung
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
[Rails / MySQL] Aufbau einer Mac-Umgebung
Docker-Befehl zum Erstellen eines Rails-Projekts in einem einzigen Schlag in einer Umgebung ohne Ruby
Ich habe versucht, TabLayout unter Android eine Trennlinie hinzuzufügen
Schwierigkeiten beim Erstellen einer Ruby on Rails-Umgebung (Windows 10) (SQLite3)
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Ich habe versucht, die Umgebung nach und nach mit Docker aufzubauen
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen