Cet article est la procédure lorsque j'ai introduit Docker dans l'environnement local de l'application de portefeuille existante.
Puisque le document officiel de Docker est l'explication de la procédure dans PostgreSQL, il n'y a pas d'explication de la procédure du document officiel en ce qui concerne MySQL.
De plus, les informations sur Rails6 sont encore inférieures à celles sur Rails5, et par conséquent, les informations sur la combinaison de Rails6 + MySQL étaient très peu nombreuses.
Par conséquent, j'ai moi-même eu diverses erreurs et j'ai essayé et commis des erreurs, donc j'espère que cet article aidera ceux qui introduisent Docker avec la combinaison de Rails6 + MySQL.
Puisque l'auteur est un débutant qui n'a aucune expérience pratique de la recherche d'emploi, il peut y avoir des erreurs.
Dans ce cas, je vous serais reconnaissant si vous pouviez me le faire savoir dans les commentaires.
Docker Desktop pour Mac` est terminée.Docker est déjà lancéDocker.Créez un Dockerfile dans le répertoire racine de l'application existante et écrivez comme suit.
** * Cette fois, le nom du répertoire de l'application est sample_app.
Remplacez-le par le nom du répertoire de votre application. ** **
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"]
Comme à l'étape 1, créez docker-compose.yml dans le répertoire racine de l'application existante et écrivez-le comme suit.
docker-compose.yml
version: '3' #docker-composer la version
services:
db:
image: mysql:8.0.21 #Combinez avec des applications existantes. Vers le terminal[$ mysql --version]Confirmer avec
environment:
MYSQL_ROOT_PASSWORD: vxgbizakqc #Votre mot de passe
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:
Comme pour les étapes 1 et 2, créez entrypoint.sh dans le répertoire racine de l'application existante et écrivez-le comme suit.
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 "$@"
Modifiez database.yml dans le répertoire config comme suit.
config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: vxgbizakqc #Votre mot de passe
socket: /tmp/mysql.sock
host: db
development:
<<: *default
database: sample_app_development
test:
<<: *default
database: sample_app_test
Exécutez la commande suivante dans le terminal pour créer une image Docker.
Terminal
MacBook-Pro:sample_app$ docker-compose build
Exécutez la commande suivante dans le terminal pour démarrer le conteneur Docker.
Terminal
MacBook-Pro:sample_app$ docker-compose up -d
Exécutez la commande suivante dans le terminal pour créer une base de données dans le conteneur.
Terminal
MacBook-Pro:sample_app$ docker-compose run web rails db:create
L'exécution de la commande ci-dessus créera une base de données basée sur le database.yml édité précédemment.
Si la base de données est créée avec succès, ce qui suit sera affiché.
Terminal
reating sample_app_web_run ... done
Created database 'sample_app_development'
Created database 'sample_app_test'
Exécutez la commande suivante dans le terminal pour exécuter la migration de la base de données.
Terminal
MacBook-Pro:sample_app$ docker-compose run web rails db:migrate
Si la migration de la base de données réussit, ce qui suit s'affiche.
Terminal
Creating sample_app_web_run ... done
== 20209165960112 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0253s
#Omission
-- add_index(:notifications, :comment_id)
-> 0.0251s
== 20209165960112 CreateNotifications: migrated (0.1280s) =====================
Eh bien, c'est la dernière de la longue introduction de Docker.
Exécutez la commande suivante dans le terminal pour installer Gem.
Terminal
MacBook-Pro:sample_app$ docker-compose exec web bundle install
c'est tout! !!
Vous pouvez voir l'application en vous connectant à localhost: 3000.
Cette fois, j'ai pu présenter Docker en me référant aux articles et matériels didactiques vidéo suivants. Merci à tous ceux qui ont écrit l'article et à M. Kojima, le créateur du matériel didactique vidéo.