[RAILS] Présentez docker à l'application que vous créez

introduction

En touchant d'abord le docker, j'ai mis l'application Rails en cours de création dans un conteneur et j'ai d'abord créé un environnement de développement. Au fait, je l'ai présenté en me référant à cet article. [Ruby on Rails, je veux présenter Docker à une application que j'ai créée à mi-chemin](https://qiita.com/majorboy/items/9fbfc78fc7bbc1f35e77#5-%E3%82%B3%E3%83% B3% E3% 83% 86% E3% 83% 8A% E3% 82% 92build% E3% 81% 99% E3% 82% 8B-docker-compose-build)

supposition

Application Rails créée

environnement

Mac OS Catalina Ruby 2.6.5 Rails 6.0.0 MySQL 5.6.47

Qu'est-ce qui s'est passé

Il y a deux fichiers créés cette fois, "Dockerfile" et "docker-compose.yml". (Comme l'application rails a déjà été créée en tant que prémisse, il n'est pas nécessaire de créer de nouveaux "Gemfile" et "Gemfile.lock" cette fois.) ** Cependant, Gemfile.lock nécessite l'installation du bundle en supprimant toutes les descriptions une fois avant de créer le conteneur. ** **

Gemfile.lock


#S'il y a une description, supprimez-la.
#Procédez comme suit avant de construire le conteneur
% docker-compose run web bundle install

Puis construisez le conteneur

% docker-compose build 

Ensuite, je dois également créer une base de données pour docker, alors exécutez ce qui suit

% docker-compose run web bundle exec rake db:create
% docker-compose run web bundle exec rake db:migrate

Cela va démarrer le conteneur

% docker-compose up

J'ai pu le démarrer, mais je n'ai pas pu me connecter même si je l'ai vérifié avec un navigateur. Vérifiez d'abord l'état du conteneur.

#Afficher le conteneur Docker en cours d'exécution
% docker ps
=>

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
ad25b9c231b9        mysql:5.7           "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        33060/tcp, 0.0.0.0:4306->3306/tcp   drill_app2_db_1

Seul Mysql fonctionne. Si vous regardez souvent l'écran de démarrage,

web_1  | sh: 1: yarn: not found
web_1  | ========================================
web_1  |   Your Yarn packages are out of date!
web_1  |   Please run `yarn install --check-files` to update.
web_1  | ========================================
web_1  | Exiting

Le côté web? (Je ne sais pas comment le dire) n'a pas commencé. Le fil semble vieux, je vais donc le mettre à jour.

% docker-compose run web yarn upgrate

=>
Error response from daemon: OCI runtime create failed: container_linux.go:349:
starting container process caused "exec: \"yarn\": executable file not found in $PATH": unknown

Cela donne également une erreur et ne peut pas être mis à niveau. Quand je me demandais quoi faire, j'ai trouvé un article dans la même situation, je vais donc modifier les paramètres du fichier en fonction de cela. Docker-composer up n'est pas possible à cause du fil (Vos packages Yarn sont obsolètes!)

config/webpacker.yml


# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
#Vrai ci-dessous=>Changer en faux

check_yarn_integrity: false

"check_yarn_integrity:" semble être un paramètre qui vous avertira si le paquet pour js est obsolète. Ici, désactivez-le une fois. J'ai vérifié l'option check_yarn_integrity de webpacker

Maintenant recommencez.

% docker-compose up

Ceci termine le démarrage pour le moment. Le navigateur s'affiche également. La connexion à mysql est également correcte.

À la fin

Apparemment, Webpack a été inclus dans la série rails6, donc une erreur de fil est impliquée. Alors peut-être que c'était mal de supprimer Gemlock.file. (Désolé, il n'a pas encore été étudié en détail.)

Recommended Posts

Présentez docker à l'application que vous créez
Rails6 J'ai essayé d'introduire Docker dans une application existante
Vous devez utiliser winpty avec docker exec [Windows]
Essayez d'introduire OpenCV dans l'application Android
Jusqu'à l'introduction des polices dans Rails
[GCP] Jusqu'à ce que vous transmettiez l'image Docker locale à Container Registry
Procédure de migration de l'environnement de développement d'applications Rails vers Docker même si vous êtes inexpérimenté (Rails5 + MySQL8.0 + docker-compose)
Examinez le remplacement de Docker vers Podman.
La route pour créer un jeu sonore 2
La route pour créer un jeu sonore 3
La route pour créer un jeu sonore 1
[Java] Lisez-vous correctement le message d'erreur? [Comment lire la trace de la pile]
Si vous utilisez Android Room et que vous souhaitez modifier la définition de colonne
Présentez Docker à l'environnement de développement et à l'environnement de test des applications Rails et MySQL existantes
À propos du cas où "Docker" freeter a tenté de mettre Docker dans l'application Rails existante
Comment vérifier le journal dans le conteneur Docker
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Comment effacer la base de données lors de la recréation de l'application
[Java / PostgreSQL] Connectez l'application WEB à la base de données
Poussez l'image vers le hub docker à l'aide de Jib
La voie de la création d'un service Web (partie 1)
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
Vérifiez l'état de l'application de la limite de débit de docker pull
Utilisez-vous correctement la méthode par défaut de l'interface?
Supprimez complètement le fichier de migration que vous n'avez pas réussi à supprimer
Commande pour essayer d'utiliser Docker pour le moment
Si vous souhaitez transformer une application Java en une image Docker, il est pratique d'utiliser jib.
Que faire si vous modifiez l'adresse d'écoute à partir de l'écran des paramètres dans le menu fixe Mattermost
Mémo qui passe à l'écran de connexion si vous n'êtes pas connecté avec l'appareil
Lorsque vous souhaitez refléter les informations de la branche principale dans la branche actuelle sur laquelle vous travaillez actuellement