・ 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"]
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é.
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.
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é.
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
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.