Rails 5, configuration de l'emplacement du dossier /tmp

a marqué ce sujet comme résolu.

Bonjour !

Je suis actuellement sur la configuration d’un serveur écrit en Ruby/Rails 5.1.3 et j’aimerai que l’instance Ruby utilise le dossier /tmp/ plutôt que le dossier ./tmp/

J’ai un peu cherché et tout ce qui est montré dans la documentation sur tmp, il n’est pas montré que c’est possible, bien que ce sujet SO montre que l’emplacement du pidfile est changeable.

Est-ce configurable, que ce soit par le biais d’une variable d’environnement ou par le biais d’un argument de ligne de commande lors du démarrage de Rails (rails s) ?

Merci !

Mais si le dossier de ton application ressemble à ça et que tmp/ se trouve à la racine de ce dossier, tu devrais tout simplement pouvoir monter app/, bin/, lib/ et compagnie séparément, sans monter tmp/, non ? Enfin, c’est en tout cas ce que je fais.

+0 -0

J’ai une structure avec un peu plus de dossiers que ça et monter séparément chaque dossier et fichier, en prenant en compte le fait qu’il y a des fichiers au même niveau que le dossier tmp/, ce serait particulièrement lourd de faire autant de mappings.

Surtout qu’actuellement, ma config docker-compose ressemble seulement à

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
  rails:
    build:
      context: rails
      dockerfile: DockerfileRails
    depends_on:
      - redis
    links:
      - redis
    ports:
      - '9292:9292'
    volumes:
      - ..:/project
      - gems:/usr/local/bundle

donc je me retrouverai avec bien plus qu’un seul volume et tout changement apporterait possiblement un besoin de retravailler cet espace de volumes…

Je trouve tout de même étonnant qu’un tel dossier temporaire serait hard-codé dans Rails… :/

+0 -0

OK alors plusieurs choses :

  • Normalement, tu as tout intérêt à monter les sources de ton projet en lecture seule, donc avec :ro à la fin de la spécification du volume, comme ça. Je ne sais pas sous quel OS ton hôte est, mais sous Linux, sans :ro ça chown les dossiers à l’utilisateur root sur l’hôte, ce qui est loin d’être désirable.

  • gems:/usr/local/bundle c’est bien le volume de tes dépendances ? Perso je ne met jamais ça sur l’hôte (j’installe tout dans le Dockerfile) mais bon, ce n’est que mon avis.

  • Je n’ai (pour l’instant en tout cas) pas rencontré de problèmes en montant plein de volumes dans un même conteneur. Pour ZdS j’en ai mis un petit paquet et je trouve que ça se passe bien.

  • D’autant que je sache, links implique depends_on.

+0 -0
  • Le source est temporairement monté en RW, je suis encore en train de configurer le tout (et d’apprendre en même temps), mais je note, j’y penserai.
  • gems:/usr/local/bundle est spécifié dans la section volumes à la fin de mon docker-compose.yml (c.f. fin du message), un bundle install est lancé à chaque démarrage de l’instance (en fait 3 containers docker se basent sur le même code pour d’autres raisons donc vu que les 2 autres instances dépendent de l’instance rails, on admet que l’instance Rails gère les gems et les autres y accèdent seulement en lecture). Il ne s’agit que d’un volume "temporaire" gardé dans docker et géré par docker.
  • Je vais regarder ton docker-compose.yml pour voir si je trouve des améliorations que je pourrais apporter au reste de ma conf.
  • Je n’y avais pas pensé, je vais corriger ça.

EDIT:

J’ai suivi ton modèle concernant les sources et seulement inclus les sources nécessaires et en effet, même si mon docker-compose est un peu plus gros, je n’ai plus de problèmes de tmp et je n’ai plus que les fichier nécessaires de mappés (avec :ro pour le source et :delegated pour les logs).

J’ai aussi supprimé les depends_on et ça m’a permis de voir et corriger 2 liens manquants !

Pour les dépendances je vais voir pour faire cette installation, mais le but d’avoir un mapping était d’avoir une seule fois toutes les dépendances à travers ces 3 containers. (EDIT: Je ne peux pas, les fichiers de dépendance étant présents dans un répertoire parent).

Section volumes en fin de fichier

1
2
volumes:
  gems:
+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte