Je ne pense pas tellement, mais lorsque vous utilisez Docker Compose with Rails, voulez-vous démarrer le serveur Rails côté hôte et côté client? Dans mon cas, je n'ai pas pu trouver un moyen de faire fonctionner le test système uniquement dans l'environnement Docker, donc dans mon cas, je voudrais exécuter Rails dans l'environnement Ubuntu et exécuter les autres tests système dans le conteneur à l'intérieur de Docker. Par conséquent, un tel environnement était nécessaire. Le problème en essayant de faire cela était que les fichiers créés dans (racine Rails) / tmp / étaient en conflit sur les côtés hôte et client et ne pouvaient pas être démarrés en même temps. L'indice que je pouvais lire et résoudre dans un tel cas était "Comment exclure une pièce lors du montage de Volume avec Docker", donc je Je vais laisser la trajectoire ici.
Le fait est que Rails ne peut pas être démarré en même temps car le dossier tmp existe. Sans cela, vous pouvez démarrer, quels que soient les conflits de port. Le fait est que nous devrions avoir une relation clairsemée les uns avec les autres. Autrement dit, les dossiers tmp client et hôte ne doivent pas être synchronisés. Le code ci-dessous empêche uniquement le dossier tmp de flotter avec l'hôte.
version: '3'
volumes:
rails_tmp_data:
services:
as:
build:
context: ./
ports:
- 3333:3000
volumes:
- ./:/usr/src/app/
- rails_tmp_data:/usr/src/app/tmp/
command:
/bin/sh -c "yarn install --check-files && bundle install && rails db:create && rails db:migrate && rm -f /usr/src/app/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0' --early-hints"
Le code ci-dessus est limité aux principaux points. Par conséquent, veuillez noter que cela ne fonctionne pas avec le copier-coller.
J'ai cassé les paramètres du port. Je n'écrirai pas à ce sujet ici. C'était devenu pénible d'écrire un article en chemin. Veuillez faire quelque chose. C'est vrai.
Ce n'était pas Stapa Saito Majirespect, et je ne pouvais penser à un tel titre que sans blague.
Recommended Posts