[RUBY] À propos de lancer `yarn install --check-files` pour mettre à jour.

C'est un mémorandum parce que j'étais accro à l'erreur suivante lors de l'utilisation de docker.

【environnement】

・ Rubis 2.7.1 ・ Rails 6.0.3.4 ・ Docker

Dockerfile

FROM ruby:2.7.1
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 \
    && apt-get update -qq \
    && apt-get install -y nodejs yarn \
    && mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

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"]

phénomène

Clonez l'environnement qui a été téléchargé sur git localement par l'équipe de développement. Il y a eu un phénomène selon lequel le conteneur docker s'est écrasé lors de l'exécution de docker-compose up. Lorsque j'ai vérifié le journal, j'ai trouvé l'erreur de fil suivante.

error Couldn't find an integrity file
error Found 1 errors.


========================================
  Your Yarn packages are out of date!
  Please run `yarn install --check-files` to update.
========================================


To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).
* Si vous voulez vous dépêcher de conclure, faites défiler vers le bas. (Parce que c'est long)

Tout d'abord, veuillez vous référer à l'article suivant comme contre-mesure à cette erreur. Nous avons adopté les changements suivants. https://qiita.com/KenAra/items/2708ce3d5c80c4f24920

config/webpacker.yml


# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
check_yarn_integrity: false  #Changé pour ne pas vérifier le fil

Avec ce support, l'écran docker démarré → rails était également affiché.

スクリーンショット 2020-11-15 16.47.27.jpg

Cependant, j'ai été soulagé pendant un moment.

Génération de modèle avec Scaffold → rails db: migrate D'accord, vérifions l'écran d'index.

スクリーンショット 2020-11-09 15.02.32.jpg

Pour remédier à cette erreur, j'ai renvoyé à l'article et au problème suivants. https://qiita.com/natecotus/items/a2bd9f3ebd5b1866d48e https://qiita.com/takuma_0625/items/2709f81ffa005fde2188 https://github.com/rails/webpacker/issues/2071

Je suis entré dans Docker avec docker-compose web bash et j'ai exécuté l'installation suivante.

rails webpacker:install

Oui, l'erreur a été résolue avec succès et j'ai pu vérifier à nouveau l'écran des rails.

J'ai essayé de vérifier la différence ce qui a été changé lorsque la commande ci-dessus a été exécutée.

config/webpacker.yml


# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
check_yarn_integrity: true

C'était tout. Et cela? Je suis revenu ...

Qu'est-ce qui a changé lorsque l'erreur de fil a été résolue? La cause de la première erreur est devenue un mystère. De plus, si je clonais à nouveau avec seulement cette méthode d'adaptation, je remarquais que le problème du premier fil était susceptible de se reproduire, et j'étais inquiet, j'ai donc mené une nouvelle enquête.

Veuillez vous référer à ce qui suit, et dans un autre environnement cloné à nouveau La commande suivante a été exécutée après que "Webpacker :: Manifest :: MissingEntryError" s'est produit. https://qiita.com/ashketcham/items/48d64e960d436f8b6f78

$ docker-compose run --rm web yarn install 

→ Oui, le problème a également été résolu ici. Merci, les aînés.

Pourquoi a-t-il été résolu en exécutant $ rails webpacker: install? Je l'ai compris lorsque j'ai vérifié le journal au moment de l'exécution. Lorsque webpacker: install était exécuté, yarn install était également exécuté en même temps.

À la conclusion ... Cette solution de contournement est due au fait que l'installation de yarn est effectuée lors de l'exécution de docker-compose Titre de cette affaire 「Please run yarn install --check-files to update.」 Avant l'apparition de $ docker-compose run --rm web yarn install Je me demande s'il n'y a pas eu de problème si j'ai exécuté.

Donc → Je me suis réengagé et confirmé.

Conclusion

Lorsque l'erreur suivante se produit dans le journal sans démarrer le conteneur avec docker-compose up

========================================
  Your Yarn packages are out of date!
  Please run `yarn install --check-files` to update.
========================================

J'ai pu le résoudre en exécutant la commande suivante (yarn install au démarrage de docker).

$ docker-compose run --rm web yarn install

Causes et impressions

Quand je l'ai relu. Le paquet de fils est vieux! Je suis en colère. Il semble qu'il n'était nécessaire de mettre à jour le paquet de fils qu'en même temps que la construction de l'image → démarrage avec docker run.

c'est tout. Parce que les deux points suivants ont été confirmés J'ai deviné que le résultat de l'exécution de l'installation de fil était reflété dans le processus de création de l'image docker.

Recommended Posts

À propos de lancer `yarn install --check-files` pour mettre à jour.
Installez Webpacker et Yarn pour exécuter Rails
Comment installer Docker
Comment installer docker-machine
Comment installer MySQL