Dieser Artikel ist das Verfahren, mit dem ich "Docker" in die lokale Umgebung der vorhandenen Portfolio-App eingeführt habe. Da das offizielle Dokument von "Docker" die Prozedurerklärung in "PostgreSQL" ist, gibt es keine Prozedurerklärung des offiziellen Dokuments, wenn es um "MySQL" geht. Außerdem sind die Informationen zu "Rails6" immer noch geringer als die zu "Rails5", weshalb die Informationen zur Kombination von "Rails6" + "MySQL" sehr gering waren. Daher habe ich selbst verschiedene Fehler erhalten und versucht und Fehler gemacht, daher hoffe ich, dass dieser Artikel denjenigen hilft, die "Docker" mit der Kombination von "Rails6" + "MySQL" einführen. Da der Autor ein Anfänger ist, der keine praktischen Erfahrungen bei der Jobsuche hat, kann es zu Fehlern kommen. In diesem Fall würde ich mich freuen, wenn Sie mich in den Kommentaren informieren könnten.
Docker
ist bereits gestartetErstellen Sie eine Docker-Datei im Stammverzeichnis der vorhandenen Anwendung und schreiben Sie wie folgt. ** * Diesmal lautet der Verzeichnisname der App sample_app. Ersetzen Sie dies durch den Verzeichnisnamen Ihrer App. ** **.
Dockerfile
FROM ruby:2.6.5
RUN 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
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn
WORKDIR /sample_app
COPY Gemfile ./Gemfile
COPY Gemfile.lock ./Gemfile.lock
RUN gem install bundler
RUN bundle install
COPY . /sample_app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
Erstellen Sie wie in Schritt 1 "docker-compose.yml" im Stammverzeichnis der vorhandenen Anwendung und schreiben Sie es wie folgt.
docker-compose.yml
version: '3' #docker-Version verfassen
services:
db:
image: mysql:8.0.21 #Mit vorhandenen Apps kombinieren. Zum Terminal[$ mysql --version]Bestätigen mit
environment:
MYSQL_ROOT_PASSWORD: vxgbizakqc #Ihr Passwort
MYSQL_DATABASE: root
ports:
- "4306:3306"
volumes:
- ./mysql-confd:/etc/mysql/conf.d
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/sample_app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
volumes:
mysql-data:
Erstellen Sie wie bei den Schritten 1 und 2 "entrypoint.sh" im Stammverzeichnis der vorhandenen Anwendung und schreiben Sie es wie folgt.
entrypoint.sh
#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /sample_app/tmp/pids/server.pid
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
Bearbeiten Sie database.yml
im Verzeichnis config
wie folgt.
config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: vxgbizakqc #Ihr Passwort
socket: /tmp/mysql.sock
host: db
development:
<<: *default
database: sample_app_development
test:
<<: *default
database: sample_app_test
Führen Sie den folgenden Befehl im Terminal aus, um ein Docker-Image zu erstellen.
Terminal
MacBook-Pro:sample_app$ docker-compose build
Führen Sie den folgenden Befehl im Terminal aus, um den Docker-Container zu starten.
Terminal
MacBook-Pro:sample_app$ docker-compose up -d
Führen Sie den folgenden Befehl im Terminal aus, um eine Datenbank im Container zu erstellen.
Terminal
MacBook-Pro:sample_app$ docker-compose run web rails db:create
Durch Ausführen des obigen Befehls wird eine Datenbank erstellt, die auf der zuvor bearbeiteten Datei "database.yml" basiert. Wenn die Datenbank erfolgreich erstellt wurde, wird Folgendes angezeigt.
Terminal
reating sample_app_web_run ... done
Created database 'sample_app_development'
Created database 'sample_app_test'
Führen Sie den folgenden Befehl im Terminal aus, um die Datenbankmigration auszuführen.
Terminal
MacBook-Pro:sample_app$ docker-compose run web rails db:migrate
Wenn die Datenbankmigration erfolgreich ist, wird Folgendes angezeigt.
Terminal
Creating sample_app_web_run ... done
== 20209165960112 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0253s
#Unterlassung
-- add_index(:notifications, :comment_id)
-> 0.0251s
== 20209165960112 CreateNotifications: migrated (0.1280s) =====================
Nun, dies ist der letzte Teil der langen Einführung von Docker.
Führen Sie den folgenden Befehl im Terminal aus, um Gem
zu installieren.
Terminal
MacBook-Pro:sample_app$ docker-compose exec web bundle install
das ist alles! !!
Sie können die Anwendung sehen, indem Sie eine Verbindung zu localhost: 3000
herstellen.
Dieses Mal konnte ich Docker vorstellen, indem ich mich auf die folgenden Artikel und Video-Unterrichtsmaterialien bezog. Vielen Dank an alle, die den Artikel geschrieben haben, und an Herrn Kojima, den Schöpfer der Video-Unterrichtsmaterialien.