0
votes

Docker, Rails, Postgres - DB Service introuvable Erreur

dockerfile xxx pré>

docker-compose.yml p> xxx pré>

Je suis en mesure de construire une image à l'aide de la commande suivante p> xxx pré>

si je fais docker-composition up code> dans le répertoire racine de projet mon application fonctionne bien et je peux voir deux conteneurs une pour mes rails app et autre pour postgres quand je faire docker conteneur ls code>. J'ai observé que l'image Postgres est chargée à partir de la bibliothèque. P>

base de données.yml Fichier P>

could not translate host name "db" to address: Name or service not known


2 commentaires

Avez-vous essayé de spécifier le port dans la base de données.yml? Port: 5432


Vous pouvez voir que le conteneur Postgres ne fonctionne pas , pourquoi pas Docker enregistre votre_postgres_container pour trouver le journal?


3 Réponses :


3
votes

sudo docker exécuté -p 3000: 3000 paperscammer_web ne démarrera que le serveur Web, vous devez exécuter docker-composent : xxx p> deuxième option: xxx


7 commentaires

Ouais, mais comment cette balance lors du déploiement dans des productions, Docker-compose Recherche de fichiers Docker, si vous suivez ce docs.docker.com/get-started/part3 . Les services définis dans Docker-Compose Fichier doivent mettre tous les services en tant que conteneurs.


Avec Composez, cela fonctionne bien, mais l'image d'application Rails ne fonctionne pas bien lorsque j'exécute Docker Run -p 3000: 3000 Paperscammer_Web. Vous devez être au courant Docker Compose créera une image puis commencer. Mais pour la production de déploiements de production produite par Docker Compose, la construction produit une image qui sera utilisée pour faire tourner des conteneurs.


Oui, mon application est maintenant capable de se connecter au service de base de données, mais la base de données n'est pas créée, une erreur de vingt


Fatal: Base de données "Paper_Scammer_Développement" n'existe pas, la commande Docker Run n'exécute pas Buundle Exec Rake DB: Créer comme mentionné dans le fichier Docker


Je pense que suite à cela devrait aider docs.docker.com/engine/examples/postgresql_service . Je dois ajouter créer des commandes de base de données et la sauter si la base de données existe déjà. Comment suggérez-vous? Avoir mon propre dockerfile pour créer une image Postgres.


Votre réponse m'a aidé à exécuter le service de base de données et à créer des liens, mais je ne peux pas connecter les migrations de la base de données avec la commande Docker Exécuter. Exécution sudo docker exécutée -p 3000: 3000 --Link dB: db paperScammer_web Bundle Exec Rake DB: Créer dB: migrer ne fonctionne que des migrations et sortez sans démarrer le conteneur.


Je ne comprends pas ce que tu veux dire mon image db je cours la commande sudo docker exécution - nom db -p 5432: 5432 -v ./tmp/db/db/postgresql/data postgres: 10 L'image juste et postgres est créée. Encore une fois, je ne pense pas que cela aura quelque chose à voir avec l'image de DB, car les migrations de rails doivent être exécutées lorsque l'image DB est filée dans le conteneur. Je suppose que la solution de contournement est autour de mon image web_app.



0
votes

docker-compose up code> et docker exécuter code> sont des commandes différentes. L'utilisation de ce dernier n'utilisera pas le fichier compose, seuls les paramètres passés à la commande.

Lorsque vous utilisez docker exécuter code> Vous devez spécifier quels conteneurs que vous souhaitez exécuter spécifiquement, si vous voulez Exécutez les deux dB code> et Web code> Vous devez utiliser cette commande deux fois. p>

D'autre part, lorsque vous utilisez docker-compose up code> Vous exécutez tous les conteneurs spécifiés dans docker-compose.yml code> avec toutes ses options. p>

aussi, la propriété dépend_on code> Spécifie simplement que le conteneur Web code> sera lancé une fois que le conteneur dB code> est lancé. P>

En tant que remarque finale, si vous voulez que vos conteneurs puissent communiquer mutuellement, vous devez ajouter un réseau au fichier composant: p> xxx pré>

Est également une bonne pratique pour ajouter un conteneur_name code> pour les référencer. P>

avec les options de thoose maintenant, les conteneurs peuvent communiquer avec leurs noms comme IPS / nom d'hôte: P>

docker-compose up -d --build


7 commentaires

Mais toujours, j'utilise le code source pour créer une image, je souhaite trouver une solution pour des images partagées.


Désolé, votre question n'est pas claire, que voulez-vous dire par «images partagées»? Images publiées dans Docker Hub?


Après avoir construit l'image, cette image sera enregistrée avec DockerHub et quelques outils de travail pour choisir l'image de DockerHub et Spin AWS ECS


Comme vous avez mentionné, je dois exécuter docker exécuter deux fois, cela fonctionne bien pour moi. Je suis maintenant bloqué avec comment exécuter des migrations de base de données comme «Docker Run Paperscammer Bundle Exec Rake DB: Migrate` ne dirige que des migrations et sortez sans démarrer le conteneur.


Peut être ça? Stackoverflow.com/Questtions/38089999 / ...


De plus, je suggère de modifier votre question et de le rendre plus clair, ajoutant ce que vous avez dit ici dans les commentaires, car c'est le problème réel.


ouais je vais mettre à jour et accepter la réponse, essayant simplement celui-ci



1
votes

Solution

./ dockerfile fort> p> blockQuote> xxx pré>

./ .env strong> p> blockQuote> xxx pré>

./ docker-compose.yml strong> p> blockQuote> xxx pré>

./ sh / dpottpoints / docker-enterrypoint.sh strong> p> blockQuote>

https://stackoverflow.com/a/59047028/4488252 p>

.git
.gitignore
README.md

#
# OS X
#
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

#
# Rails
#
.env
.env.sample
*.rbc
capybara-*.html
log
tmp
db/*.sqlite3
db/*.sqlite3-journal
public/system
coverage/
spec/tmp
**.orig

.bundle

.ruby-version
.ruby-gemset

.rvmrc

# if using bower-rails ignore default bower_components path bower.json files
vendor/assets/bower_components
*.bowerrc
bower.json


0 commentaires