Führen Sie Docker in die Entwicklungs- und Testumgebung vorhandener Rails- und MySQL-Apps ein

Einführung

Wie der Titel schon sagt, wird Docker in der vorhandenen Entwicklungsumgebung für Rails- und MySQL-Anwendungen installiert. Außerdem können rspec-Tests in Docker ausgeführt werden. Es gibt bereits viele ähnliche Artikel, aber ich habe einige Fehler festgestellt, daher fasse ich zusammen, wie ich gearbeitet habe. Ich würde mich freuen, wenn Sie mich wissen lassen könnten, wenn es Fehler gibt.

Umgebung

Wenn die Rails-Version 6 und die MySQL-Version 8 ist, funktioniert diese Methode nicht.

Verfahren

  1. Erstellen Sie eine Docker-Datei
  2. Erstellen Sie die Datei docker-compose.yml
  3. Ändern Sie die vorhandene database.yml
  4. Starten Sie

1. Erstellen Sie eine Docker-Datei

Erstellen Sie eine neue Docker-Datei im vorhandenen Projektverzeichnis.

Dateiorganisation


 test_app#Bestehendes Projekt
├── Abkürzung
    ├── Dockerfile #Erstellen
    ├── docker-compose.yml #Erstellen
    ├── Gemfile
    ├── Gemfile.lock
    ├── .env #verwenden
    ├── config
         └──database.yml #Veränderung

Ich werde den Inhalt beschreiben. Bitte ordnen Sie "test_app" unten jedem App-Namen zu.

Dockerfile


FROM ruby:2.6.5

RUN apt-get update \
    && apt-get install -y --no-install-recommends nodejs mariadb-client build-essential \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR /test_app

COPY Gemfile /test_app/Gemfile
COPY Gemfile.lock /test_app/Gemfile.lock

RUN gem install bundler
RUN bundle install
COPY . /test_app

2. Erstellen Sie die Datei docker-compose.yml

docker-compose.yml


version: '3'

services:
  db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    ports: 
      - '3306:3306'
    environment:
      MYSQL_DATABASE: today_code_development
      MYSQL_ROOT_PASSWORD: ${DATABASE_DEV_PASSWORD}
      MYSQL_USER: ${DATABASE_DEV_USER}
      MYSQL_PASSWORD: ${DATABASE_DEV_PASSWORD}
    volumes:
      - mysql-data:/var/lib/mysql

  test-db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    environment:
      MYSQL_DATABASE: today_code_test
      MYSQL_ROOT_PASSWORD: ${DATABASE_DEV_PASSWORD}
      MYSQL_USER: ${DATABASE_DEV_USER}
      MYSQL_PASSWORD: ${DATABASE_DEV_PASSWORD}
    ports:
      - '3307:3306'

  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
      - test-db
    ports:
      - "3000:3000" 
    volumes:
      - .:/today_code
      - bundle:/usr/local/bundle

volumes:
  mysql-data:
  bundle:

Schreiben Sie nur die Punkte.

.env


DATABASE_DEV_USER = 'hoge'
DATABASE_DEV_PASSWORD = 'password'

3. Ändern Sie database.yml

database.yml


default: &default
  adapter: mysql2
  encoding: utf8
  charset: utf8
  pool: 5
  port: 3306

development:
  <<: *default
  database: test_app_development
  username: <%= ENV['DATABASE_DEV_USER'] %>
  password: <%= ENV['DATABASE_DEV_PASSWORD'] %>
  host : db

test:
  <<: *default
  database: test_app_test
  username: <%= ENV['DATABASE_DEV_USER'] %>
  password: <%= ENV['DATABASE_DEV_PASSWORD'] %>
  host : test-db

production:
  <<: *default
  database: <%= ENV['DB_NAME'] %>
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>
  host: <%= ENV['DB_HOSTNAME'] %>

--Benutzername und Passwort sind identisch mit Docker-Compose.

4. Starten Sie

Wenn Sie Docker am Ende starten können, ist dies erfolgreich.

  1. Erstellen Sie ein Image mit "Docker-Compose Build"
  2. Starten Sie den Container mit docker-compose up -d. -d ist eine Option, um im Hintergrund zu beginnen.
  3. Erstellen Sie eine Datenbank mit "Docker-Compose Run Web Rails db: create"

Wenn es unter http: // localhost: 3000 / angezeigt wird, ist es erfolgreich. Alles was Sie tun müssen ist db: migrate oder db: seed und Sie sind fertig.

Referenzartikel

Ich habe versucht, eine vorhandene Rails-Projektentwicklungsumgebung mit Docker (Rails + MySQL) zu erstellen. Ausführen einer vorhandenen Rails-App in einem Docker-Container + DB-Container-Visualisierung mit Sequence Pro Erstellen einer Test-DB in der Rails x Docker-Umgebung Docker-Daten beibehalten! Einführung in die Umgebungskonstruktion ab dem Verständnis des Datenvolumens

Recommended Posts

Führen Sie Docker in die Entwicklungs- und Testumgebung vorhandener Rails- und MySQL-Apps ein
Verfahren zum Einführen von Docker in die Entwicklungsumgebung vorhandener Rails-Apps [Rails, MySQL, Docker]
So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]
Umweltbauweise und Fehlerbehebung zum Zeitpunkt der gemeinsamen Entwicklung (Schienen, Docker und Github)
[Grobe Erklärung] So trennen Sie den Betrieb der Produktionsumgebung und der Entwicklungsumgebung mit Rails
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
[Docker] So sichern und wiederherstellen Sie DB-Daten der Rails-Anwendung auf Docker-Compose [MySQL]
[Circle CI] Ich war süchtig nach dem automatischen Test von Circle CI (Rails + MySQL) [Memo]
Verbessern Sie die Leistung der Docker-Entwicklungsumgebung
Führen Sie die Docker-Umgebung Rails MySQL auf Heroku aus. Entwickeln und verstecken Sie die Twitter-API
Rails6 Ich habe versucht, Docker in eine vorhandene Anwendung einzuführen
SSL in der lokalen Umgebung von Docker / Rails / Puma
[Rails] [Docker] Kopieren und Einfügen ist in Ordnung! So erstellen Sie eine Rails-Entwicklungsumgebung mit Docker
Für diejenigen, die MySQL für die Datenbank in der Umgebungskonstruktion von Rails6 ~ verwenden möchten.
Was ist zu tun, wenn in einer der Quellen in der Entwicklungsumgebung mit Docker × Rails × RSpec "Nicht gefunden" angezeigt wird?
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
[Rails 6.0, Docker] Ich habe versucht, die Konstruktion der Docker-Umgebung und die zum Erstellen eines Portfolios erforderlichen Befehle zusammenzufassen
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Super Anfänger baut Rails 6 + Postgresql-Umgebung mit Docker bis zum Ende
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
[Rails] Wie man Kaminari mit Slim einführt und das Design ändert
[Rails / Heroku / MySQL] So setzen Sie die Datenbank der Rails-App auf Heroku zurück
[Rails] Lesen Sie das RSS der Site und geben Sie den Inhalt an die Vorderseite zurück
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
Vorgehensweise zum Migrieren der Rails-Anwendungsentwicklungsumgebung zu Docker, auch wenn Sie unerfahren sind (Rails5 + MySQL8.0 + Docker-Compose)
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
Ausführen mit normalen Befehlen für die Entwicklungssprache in der Docker-Entwicklungsumgebung
[Aufbau der Rails & Docker & MySQL-Umgebung] Ich habe den Container gestartet, kann aber MySQL nicht finden ...?
[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 lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
[Rails] Artikel für Anfänger, um den Fluss von form_with zu organisieren und zu verstehen
Ich habe versucht, das auf Vagrant erstellte Portfolio in die Entwicklungsumgebung von Docker zu migrieren
Immerhin wollte ich den Inhalt von MySQL mit Docker in der Vorschau anzeigen ...
So erstellen Sie eine Rails 6-Umgebung mit Docker
[Erste Umgebungskonstruktion] Ich habe versucht, eine Rails6 + MySQL8.0 + Docker-Umgebung unter Windows 10 zu erstellen.
[Rails5.2] Unterstützung für Piktogramme von MySQL 5.7 in Docker (Zeichencode in utf8mb4 ändern)
So erstellen Sie mit Docker ~ Vue ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Über den Fall, in dem der Freeter "Docker" versucht hat, Docker in die vorhandene Rails-Anwendung einzufügen
Erstellen Sie eine Entwicklungsumgebung für Docker + Rails6 + Postgresql