[RUBY] So erstellen Sie eine Rails 6-Umgebung mit Docker

Einführung

Ich werde vorstellen, wie mit Docker eine Rail 6-Umgebung erstellt wird. Webpack wurde von Rails6 eingeführt, und das Verfahren unterscheidet sich ein wenig von Rails5, daher habe ich dies berücksichtigt.

Offizielle Docker-Seite Quickstart: Compose and Rails

Umgebung

Docker3 Rails6.0.3 Ruby2.7.1 DB:PostgeSQL

1. Erstellen Sie die erforderlichen Dateien

Dieses Mal erstellen wir die Umgebung in einem Ordner namens "myapp". Wenn Sie den Namen ändern möchten, ändern Sie bitte "myapp" entsprechend.

Die von nun an zu erstellende Dateistruktur lautet wie folgt.

Dateiorganisation


myapp
  --Dockerfile
  --Gemfile
  --Gemfile.lock
  --entrypoint.sh
  --docker-compose.yml

Erstellen Sie zunächst einen Ordner.

Terminal


$ mkdir myapp
$ cd myapp

1.1 Dockerfile

Terminal


$ touch Dockerfile

Dockerfile


FROM ruby:2.7.1
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client

##Bei der Installation des Webpacks sind Knoten und Garn erforderlich
#Installieren Sie das Garnpaket-Verwaltungstool
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
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 && apt-get install -y yarn

# Node.installiere js
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \
apt-get install nodejs

RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

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

1.2 Gemfile

Terminal


$ touch Gemfile

Gemfile


source 'https://rubygems.org'
gem 'rails', '~>6'

1.3 Gemfile.lock

Terminal


$ touch Gemfile.lock

Hier ist nichts aufgeführt.

1.4 entrypoint.sh

Terminal


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

1.5 docker-compose.yml

Terminal


$ touch docker-compose.yml

docker-compose.yml


version: '3'
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    
    #######hinzufügen#########################
    environment:
      POSTGRES_HOST_AUTH_METHOD: 'trust'
    ###################################

  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

2. Erstellen Sie das Projekt

2.1 rails new

Terminal


$ docker-compose run web rails new . --force --no-deps --database=postgresql --skip-bundle

Informationen zu Befehlsoptionen --force: Überschreibt, auch wenn die Datei vorhanden ist --no-deps: Starten Sie den verknüpften Dienst nicht --database = postgresql: DB gibt PostgreSQL an --skip-bundle: überspringe die Bundle-Installation (nach dem Erstellen der App)

2.2 docker-compose build Nachdem eine neue Gem-Datei erstellt wurde, verwenden Sie den folgenden Befehl, um die Installation zu bündeln.

Terminal


$ docker-compose build

2.3 Ändern Sie die Verbindungseinstellungen in DB

config/database.yml


default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  #####hinzufügen#####
  host: db
  username: postgres
  passowrd:
  #############

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

2.4 Bestätigung des Starts des Docker-Containers

Terminal


$ docker-compose up

Es ist in Ordnung, wenn der Container gestartet und eine Verbindung zum Server hergestellt wird. Ich habe noch keine Datenbank erstellt, daher wird der folgende Fehler angezeigt. スクリーンショット 2020-06-09 10.33.12.png

2.5 DB-Erstellung

Da ich eine Verbindung zum Server herstellen konnte, habe ich eine Datenbank erstellt. Nach dem Trennen mit Strg + C.

Terminal


  #Stoppen Sie Docker einmal
$ docker-compose stop
$ docker-compose down
 
  #DB-Erstellung
$ docker-compose run web rake db:create

  #Starten Sie Docker erneut
$ docker-compose up

3. Stellen Sie sicher, dass der Container und der Server ausgeführt werden

Wenn Sie eine Verbindung zu [http: // localhost: 3000 /](http: // localhost: 3000 /) herstellen, können Sie bestätigen, dass der Vorgang erfolgreich gestartet wurde. Die Version ist Rails6, Ruby2.7.1 wie festgelegt. スクリーンショット 2020-06-09 10.36.35.png

Andere

Sie müssen Docker-Befehle verwenden, wenn Sie in Docker entwickeln.

$ docker-Compose Run Web Bundle Exec Rails Befehl

Beispiel


$ docker-compose run web bundle exec rails g model User
$ docker-compose run web bundle exec rails g controller Homepages index
$ docker-compose run web bundle exec rails g rspec:install 

Referenz

Offizielle Docker-Seite Quickstart: Compose and Rails Schritte zum Erstellen einer Ruby on Rails-Umgebung mit Docker [Rails 6-kompatibel] Ich war süchtig danach, mit Docker eine Rails 6-Entwicklungsumgebung zu erstellen Das Postgres Docker-Image wurde geändert und kann nicht mehr gestartet werden [Rails] ActiveRecord::NoDatabaseError [Docker]

Recommended Posts

So erstellen Sie eine Rails 6-Umgebung mit Docker
[Rails] So erstellen Sie eine Umgebung mit Docker
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ
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)
So erstellen Sie mit Docker ~ Express ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
[Rails] [Docker] Kopieren und Einfügen ist in Ordnung! So erstellen Sie eine Rails-Entwicklungsumgebung mit Docker
So erstellen Sie mit Docker ~ MySQL ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Erstellen einer Docker-Umgebung mit WSL
So erstellen Sie eine API mit GraphQL und Rails
So erstellen Sie mit Docker ~ Sequelize ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
[Docker-Umgebung] Umgang mit ActiveSupport :: MessageEncryptor :: InvalidMessage
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
Erstellen Sie mit Docker eine lokale Couchbase-Umgebung
Erstellen Sie mit Docker eine Node.js-Umgebung
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
Erstellen Sie mit Laradock eine Docker + Laravel-Umgebung
So erstellen Sie CloudStack mit Docker
So erstellen Sie mit Docker ~ Vue ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Festlegen von Umgebungsvariablen bei Verwendung von Payjp mit Rails
So teilen Sie Dateien mit Docker Toolbox
Schienenumgebungskonstruktion mit Docker (persönliche Apokalypse)
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
So beenden Sie Docker für Mac und erstellen eine Docker-Entwicklungsumgebung mit Ubuntu + Vagrant
[Docker] Erstellen Sie die Ausführungsumgebung von Jupyter Lab mit Docker
Erstellen Sie eine Umgebung mit Docker unter AWS
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
Schritte zum Erstellen einer Ruby on Rails-Entwicklungsumgebung mit Vagrant
Wie schreibe ich Rails
Aufbau der Rails Docker-Umgebung
So installieren Sie Docker
So deinstallieren Sie Rails
Erstellen Sie eine Entwicklungsumgebung für Docker + Rails6 + Postgresql
So verknüpfen Sie Rails6 Vue (aus dem Umgebungsbau)
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
So geben Sie jemandem Ihr Image mit Docker
Rails6.0 ~ So erstellen Sie eine umweltfreundliche Entwicklungsumgebung