Hallo. Dieses Mal habe ich das Verfahren zur Einführung von Docker in die Entwicklungsumgebung der vorhandenen Rails-Anwendung zusammengefasst. Ich habe noch nicht genug gelernt, daher würde ich mich freuen, wenn Sie auf Korrekturen oder Verbesserungen hinweisen könnten.
Ruby:2.5.3 Rails:5.2.4.3 MySQL:5.6 Docker:19.03.8 docker-compose:1.25.4
Erstellen Sie "Dockerfile" und "docker-compose.yml" direkt im Stammverzeichnis Ihrer vorhandenen Rails-App. Unten finden Sie den Inhalt jeder Datei.
Dockerfile
FROM ruby:2.5.3
RUN apt-get update && apt-get install -y \
build-essential \
nodejs
WORKDIR /kakeibo
COPY Gemfile Gemfile.lock /kakeibo/
RUN bundle install
FROM ruby: 2.5.3
entspricht der Ruby-Version der App.Führen Sie apt-get update && apt-get install -y ~
aus, um die erforderlichen Pakete zu installieren.
--Erstellen Sie mit WORKDIR / kakeibo
einen Ordner im Container.COPY Gemfile Gemfile.lock / kakeibo /
in den Container kopiert haben, führen Sie bundle install
aus.docker-compose.yml
version: '3'
volumes:
mysql-data:
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
ports:
- '3000:3000'
volumes:
- '.:/kakeibo'
tty: true
stdin_open: true
depends_on:
- db
links:
- db
db:
image: mysql:5.6
volumes:
- 'mysql-data:/var/lib/mysql'
environment:
- 'MYSQL_ROOT_PASSWORD=password'
Eine ausführliche Erläuterung des Inhalts von "Dockerfile" und "docker-compose.yml" wurde in [diesem Artikel] zusammengefasst (https://qiita.com/hogehoge1234/items/28be70b674e24427491e).
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db
development:
<<: *default
database: kakeibo_development
Ordnen Sie das "Passwort" und den "Host" von "config / database.yml" den in docker-compose.yml festgelegten Werten zu.
$ docker-compose build
$ docker-compose up -d
$ docker-compose exec web rails db:create
$ docker-compose exec web rails db:migrate
Wenn Sie jetzt http: // localhost: 3000 besuchen, sollten Sie die App erfolgreich sehen können.