-#Kontext erstellen
% mkdir product-register
% cd product-register
-#Gemfile und Gemfile.Eine Sperre erstellen
% touch Gemfile Gemfile.lock
-#Gemfile bearbeiten
% vim Gemfile
product-register/Gemfile
source 'https://rubygems.org'
gem 'rails', '~>5.2'
-#Bearbeiten der Docker-Datei
% vim Dockerfile
product-register/Dockerfile
FROM ruby:2.5
RUN apt-get update && apt-get install -y && \
buile-essential \
libpq-dev \
nodejs \
postgresql-client \
yarn
WORKDIR /product-register
COPY Gemfile Gemfile.lock /product-register/
RUN bundle install
-#Container erstellen
% docker build .
-# docker-compose.Yml bearbeiten
% vim docker-compose.yml
docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- '3000:3000'
volumes:
- '.:/product-register'
tty: true
stdin_open: true
-#Container starten
% docker-compose up -d
-#Bei Arbeiten in einem Container
% docker-compose exec web bash
-#Da die Anwendungserstellung, die DB-Einstellung und das Bundle mit Dockerfile erfolgen - überspringen
# rails new . —force —database=postgresql —skip-bundle
-#Stellen Sie sicher, dass sich der Inhalt von Gemfile auf der Hostseite geändert hat
% cat Gemfile
-#Ich muss die Installation bündeln, also hör einmal auf
# exit
$ docker-compose down
-# docker-Wenn Sie komponieren, wird das vorherige Bild verwendet. Erstellen Sie es also erneut
$ docker-compose up —build -d
% docker-compose exec web bash
-#Starten Sie den Rails-Server
$ rails s -b 0.0.0.0
Ich kann eine Verbindung mit localhost: 3000 herstellen, erhalte jedoch eine Fehlerseite, da ich die Datenbank nicht festgelegt habe.
config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
user: postgres
port: 5432
password: <%= ENV.fetch("DATABASE_PASSWORD") %>
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
Da es aus Sicherheitsgründen nicht wünschenswert ist, das Kennwort direkt zu schreiben, rufen Sie es mit einer Umgebungsvariablen auf.
docker-compose.yml
version: '3'
#Docker-Volume Hier werden Daten gespeichert
volumes:
db-data:
services:
web:
build: .
ports:
- '3000:3000'
volumes:
- '.:/product-register'
#Die Einstellung der Umgebungsvariablen des Containers, ursprünglich das Kennwort, sollte nicht direkt geschrieben werden.
environment:
- 'DATABASE_PASSWORD=postgres'
tty: true
stdin_open: true
#Wird erstellt, sobald der Datenbankdienst erstellt wurde
depends_on:
- db
#Sie können über das Web auf db zugreifen
links:
- db
#Postgres Container
db:
image: postgres
#Host db-Daten in Daten speichern
volumes:
- 'db-data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_USER=postgres'
- 'POSTGRES_PASSWORD=postgres'
% docker-compose up -d
-#Sie können sehen, dass die beiden Dienste ausgeführt werden
Creating product-register_db_1 ... done
Recreating product-register_web_1 ... done
% docker-compose exec web bash
-#DB-Erstellung
# rails db:create
Created database 'product-register_development'
Created database 'product-register_test'
Sie können sehen, dass die Datenbank erstellt wurde. Von hier aus können Sie Rails-Apps erstellen.
-#Machen Sie eine einfache App mit Gerüst
# rails g scaffold product name:string price:integer vender:string
-#Definieren Sie die erstellte Tabelle
# rails db:migrate
-#Starten Sie den Server
# rails s -b 0.0.0.0
Sie können eine Verbindung mit localhost: 3000 herstellen und sehen, dass die Rails-Seite angezeigt wird. Sie können eine Verbindung zu Apps herstellen, die mit localhost: 3000 / products erstellt wurden.
Recommended Posts