[RUBY] Une solution aux erreurs Docker dans lesquelles les débutants ont tendance à rester coincés

Contexte de l'article

Après avoir été diplômé du Wagon Tokyo (https://www.lewagon.com/ja/tokyo), une école de programmation anglaise de France qui enseigne principalement Ruby and Rails, j'ai commencé à étudier Docker. J'ai construit Docker sur un projet sur lequel j'ai travaillé après l'obtention de mon diplôme, mais j'ai rencontré de nombreuses erreurs. J'ai résolu l'erreur par moi-même par essais et erreurs, donc cela a pris beaucoup de temps. Je pense qu'il y a beaucoup de gens comme moi qui ont eu des problèmes avec des erreurs lorsqu'ils ont touché Docker pour la première fois, j'ai donc décidé d'écrire cet article, en espérant que la solution que j'ai utilisée serait utile.

1 PermissionError (Permission denied :‘~~~/your_app/tmp/db’) D'après ce que je peux voir dans la documentation officielle de Docker, cette erreur ne semble concerner que les utilisateurs de Linux, mais je partagerai l'autorisation car cela peut être ennuyeux pour les utilisateurs de Linux. Cette erreur se produit car Docker crée une base de données temporaire (dossier db), mais l'utilisateur Linux actuellement connecté n'a pas le droit d'utiliser cette base de données.

Tout d'abord, utilisez cette commande pour vous déplacer vers ce dossier temporaire.

$ cd ~~~(Chemin d'accès à votre application)/(Votre propre nom d'application)/tmp

Vérifiez quels utilisateurs peuvent utiliser le dossier db avec la commande suivante.

$ ls -la

Si vous ne voyez pas le nom de l'utilisateur Linux actuellement connecté, donnez à cet utilisateur l'autorisation avec la commande suivante:

$ sudo chown -R (Nom d'utilisateur Linux) . 
password for (Nom d'utilisateur Linux):

Puisqu'il s'agit d'une commande sudo, vous serez invité à entrer le mot de passe. À ce stade, vous devriez pouvoir exécuter les principales commandes Docker telles que "docker-compose build" et "docker-compose up" sans aucun problème.

Remarque: Avec une erreur similaire, j'ai dit "FATAL: impossible d'ouvrir le fichier" Je vois souvent l'erreur "global / pg_filenode.map": Permission refusée ", mais c'est correct si vous redémarrez avec" docker-compose stop "→" docker-compose up ".

2 No space left on your device Cette erreur se produit lorsque la capacité de l'image Docker devient importante en raison du paramètre du Dockerfile. Les images et les conteneurs inutiles peuvent être facilement supprimés avec la commande suivante.

$ docker image prune
$ docker container prune

Lorsque vous entrez ces commandes, vous verrez le message suivant:

WARNING! This will remove all dangling images (Ou conteneurs).
Are you sure you want to continue? [y/N]

Entrez "y" car les images pendantes signifient des images inutiles. Vous devez disposer de suffisamment d'espace et pouvoir exécuter les mêmes commandes principales de Docker que lors de la résolution de PermissionError.

Si vous avez besoin d'en supprimer plus, recherchez l'image que vous souhaitez supprimer ci-dessous.

$ docker images

Après avoir confirmé l'ID de l'image que vous souhaitez supprimer, supprimez-le ci-dessous.

$ docker image rm -f (ID de l'image que vous souhaitez effacer)

Les références

Bien qu'en anglais, ce livre est recommandé car il explique en détail comment utiliser Docker dans les projets Ruby on Rails.

Docker for Rails Developers: https://pragprog.com/titles/ridocker/

Malheureusement, il existe peu de documents Docker pour Rails, y compris l'anglais, donc si vous avez une courte histoire de Rails et que vous souhaitez lire des documents simples sur Docker, c'est en anglais, mais cela vaut la peine d'être lu. pense.

Article en anglais moyen

J'ai écrit un article en anglais sur Medium plus en détail sur ce sujet, alors jetez-y également un œil.

https://medium.com/@shogohida_81081/5-solutions-to-common-errors-of-docker-for-beginners-c04dc1237c78

Recommended Posts

Une solution aux erreurs Docker dans lesquelles les débutants ont tendance à rester coincés
Restez coincé dans un Java Primer
Que faire si vous obtenez une erreur gcc dans Docker
Commandes qui ont aidé à résoudre les erreurs dans Docker
[AWS CLI] Changer de rôle pour obtenir une image Docker dans un autre compte
Comment obtenir un heapdump à partir d'un conteneur Docker
Une histoire sur une erreur lors de la migration dans docker PHP Laravel
Spring Boot Ce que les débutants ont tendance à avoir (@ComponentScan)
Avec podman dans docker, tout le monde veut s'entendre et utiliser docker avec un ordinateur partagé
Que faire lorsqu'une exception java.io.IOException se produit dans GlassFish
Une histoire amusante coincée dans le désordre lors de la tentative d'importation de fx-clj
Comment implémenter un travail qui utilise l'API Java dans JobScheduler
Je suis bloqué en essayant de faire fonctionner mon propre traitement d'annotation dans Eclipse
Comment installer confortablement JDK 11 dans votre Mac
Comment obtenir des paramètres dans Spark
Comment tester une méthode privée et la simuler partiellement en Java
Que faire si vous obtenez un avertissement groovy dans Thymeleaf Layout
Script Shell qui construit une image Docker et la pousse vers ECR
Comment obtenir la date actuelle sous forme de chaîne au format aaaaMMjj
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
Comment migrer une application Web créée dans un environnement Docker local vers AWS
[Java] [Pour les débutants] Comment insérer des éléments directement dans un tableau à deux dimensions
[Ruby / Rails] Utilisez un alias. De manière à ce que rubocop ne se fâche pas!
Comment démarrer un conteneur Docker avec un volume monté dans un fichier de commandes