Ich habe die Ruby and Rails-Kurse von Progate durchlaufen. Danach habe ich mit Docker eine Umgebung erstellt und mit Rails einen API-Server erstellt.
Bei Progate habe ich gelernt, wie man Rails einschließlich Ansichten schreibt, aber ich wollte Rails nur als API-Server verwenden. Da ich mit Docker entwickeln wollte, erstellte ich eine Rails-Entwicklungsumgebung unter Bezugnahme auf den offiziellen Schnellstart. Fassen Sie das dabei gewonnene Know-how zusammen.
Ich werde in einem anderen Artikel über Gem schreiben, das in der API-Serverentwicklung verwendet wird.
Verstehen Sie, wie Sie Docker und Docker-Compose verwenden
Ruby 2.7 MySQL 5.7 VSCode Mac 10.14.5 Zum Anzeigen der Sequel Pro-Datenbank
Erstellen Sie zunächst einen Projektordner. Hier ist es Schienenmuster. Und erstellen Sie direkt darunter eine Docker-Datei
FROM ruby:2.7
RUN apt-get update -qq && apt-get install -y
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
# 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"]
Bereiten Sie als Nächstes ein Gemfile vor, um Schienen zu installieren
source 'https://rubygems.org'
gem 'rails', '~>5'
Erstellen Sie eine leere Gemfile.lock
touch Gemfile.lock
Erstellen Sie "entrypoint.sh", wie in der Docker-Datei beschrieben
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 "$@"
Unter Docker Official Quick Start erfahren Sie, warum diese Dateien erstellt werden.
Erstellen Sie "docker-compose.yml"
docker-compose.yml
version: '3'
services:
server:
build: .
tty: true
volumes:
- .:/myapp
working_dir: /myapp
ports:
- "3000:3000"
depends_on:
- mysql
command: bash
# command: >
# bash -c "rm -f tmp/pids/server.pid &&
# bundle exec rails s -p 3000 -b '0.0.0.0'"
mysql:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: mysql
volumes:
- "./mysql/db-data/:/var/lib/mysql" #Datenpersistenz
- "./mysql/my.cnf:/etc/mysql/conf.d/my.cnf" #Notwendig, um Japanisch als Daten zu verwenden
Für die Persistenz von MySQL-Daten und japanische Unterstützung
Erstellen Sie einen Rails-Sample> MySQL> DB-Datenordner. Erstellen Sie "my.cnf" im Ordner "mysql"
my.cnf
[mysqld]
character-set-server=utf8
Bis zu diesem Punkt ist dies die Konfiguration.
Wenn Sie das können, machen Sie "Rails New".
docker-compose run server rails new . -MC --force --api --database=mysql --skip-active-storage
Suchen Sie die Optionen im Befehl Rails und in der Befehlshilfe, und lassen Sie diejenigen aus, die Sie nicht benötigen. Die wichtigen Optionen sind:
--force //Dateien auf Schienen neu überschreiben
--api //Generieren Sie keine unnötigen Ansichten für die API-Entwicklung
--database=myql //Standardmäßig SQLite, aber MySQL angeben
Sie können damit verschiedene Dinge machen.
Hier werden "Gemfile" und "Gemfile.lock" überschrieben und neu. Um dies im Bild wiederzugeben
docker-compose build
Es besteht die Notwendigkeit.
Wenn Sie den benötigten Edelstein im Voraus kennen, schreiben Sie ihn hier in die Edelsteindatei.
Dies vervollständigt Schienen neu
config > database.yml
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: mysql
development:
<<: *default
host: mysql
database: myapp_development
...
test:
<<: *default
host: mysql
database: myapp_test
Ich brauchte keine Produktion, also habe ich es auskommentiert. Der Hostname ist der Dienstname von "docker-compose.yml" Das Passwort wird auch in "docker-compose.yml" angegeben
Wenn Sie können, starten Sie den Container mit "docker-compose up -d" und gehen Sie mit der Attach Shell von VS Code hinein.
rails db:create
Erstellen Sie eine DB mit
root@dc075120af8a:/myapp# rails db:create
...
Created database 'myapp_development'
Created database 'myapp_test'
Jetzt haben Sie eine Datenbank. Wenn Sie eine Verbindung mit Sequel Pro herstellen, können Sie bestätigen, dass die Datenbank erstellt wurde
Danach können Sie, wie Sie in Progate erfahren haben, eine Tabelle erstellen, indem Sie ein Modell erstellen und migrieren.
Docker Official Quick Start English Bitte beachten Sie, dass der Inhalt für Japaner alt ist.
Rails Guide Rails API Dedicated Application
Recommended Posts