[LINUX] Vous qui voulez lancer Rails à la fois sur l'hôte et le client avec Docker Compose!

Qu'est-ce que c'est ça?

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.

Que faites-vous?

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.

C'est tout

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.

À propos du titre

Ce n'était pas Stapa Saito Majirespect, et je ne pouvais penser à un tel titre que sans blague.

Recommended Posts

Vous qui voulez lancer Rails à la fois sur l'hôte et le client avec Docker Compose!
lire le tag qui vous est attribué dans ec2 avec boto3
Obtenez le nom d'hôte du PC hôte avec Docker sous Linux
Pour ceux d'entre vous qui ne savent pas comment définir un mot de passe avec Jupyter sur Docker
Lorsque vous souhaitez ajuster l'intervalle de l'échelle de l'axe avec APLpy
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
Connectez-vous au VPN avec votre smartphone et éteignez / rallumez le serveur
Si vous souhaitez inclure awsebcli dans CircleCI, spécifiez la version de python
Ajouter un intervalle de confiance de 95% des deux côtés pour la figure avec Python / Matplotlib
Lorsque vous souhaitez modifier l'en-tête HTTP du client de test de Flask
Je veux analyser les sentiments des gens qui veulent se rencontrer et trembler
Lancez l'application Flask avec Docker sur Heroku
Rejoignez Azure avec Go ~ Pour ceux qui veulent démarrer et connaître Azure avec Go ~
Pour ceux qui veulent apprendre Excel VBA et se lancer avec Python
Ce que vous voulez mémoriser avec la grammaire de base de "manipulation de chaînes" de python
nb_conda_kernels est recommandé si vous souhaitez entrer dans l'environnement virtuel avec jupyter