Actuellement, j'utilise docker compose pour connecter mon application Web à la base de données postgre. Ma configuration ressemble à ceci:
# Dockerfile
FROM rails:onbuild
RUN rake db:create db:migrate db:seed
# config/database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: postgresql
encoding: utf8
database: rezeptr_prod
pool: 5
username: postgres
password:
host: db
development:
<<: *default
database: rezeptr_dev
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: rezeptr_test
# docker-compose.yml
db:
image: postgres
web:
build: .
volumes:
- .:/usr/src/app
ports:
- "3000:3000"
links:
- db:db
Si j'exécute docker-compose up
j'obtiens cette erreur
could not translate host name "db" to address: Name or service not known
Si je n'exécute pas rake db:create ...
dans le Dockerfile et que je l'exécute comme ceci docker-compose run web rake db:create
cela fonctionne bien et je n'obtiens aucune erreur. Pouvez-vous m'aider?
Oui, les liens ne sont pas disponibles pendant la phase de construction. Il existe plusieurs façons d'installer vos appareils pendant la construction, mais aucune d'entre elles n'est vraiment simple:
Dockerfile
pour la base de données, ajouter toute la source du projet et les dépendances ruby, et exécuter le rake db:create
dans le cadre de la construction de l'imagerake db:create
dans le cadre du script de point d'entrée d'une image de base de données (quelque chose dont je ne suis pas fan et que je ne recommande pas vraiment)Ok cool! : +1: Tout d'abord, merci pour votre longue description! Je vais l'exécuter comme une étape manuelle, cela devrait suffire pour l'instant. Plus tard, je pourrais penser à d'autres étapes!
@dazorni Pourriez-vous s'il vous plaît mettre à jour les étapes à résoudre. Je suis entré dans ça et j'essaye de découvrir. Je sais que c'est difficile à reproduire, mais j'apprécie vraiment si vous pouvez montrer :).
Commentaire le plus utile
Oui, les liens ne sont pas disponibles pendant la phase de construction. Il existe plusieurs façons d'installer vos appareils pendant la construction, mais aucune d'entre elles n'est vraiment simple:
Dockerfile
pour la base de données, ajouter toute la source du projet et les dépendances ruby, et exécuter lerake db:create
dans le cadre de la construction de l'imagerake db:create
dans le cadre du script de point d'entrée d'une image de base de données (quelque chose dont je ne suis pas fan et que je ne recommande pas vraiment)