I tried to follow the guide here: https://docs.docker.com/compose/rails/
docker-compose.yml
version: '3'
services:
pg: ######### LOOK HERE!
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: bundle exec rails server -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- pg
links:
- pg ######### LOOK HERE!
cms:
image: joomla
restart: always
links:
- mysql:joomladb
ports:
- 8080:80
environment:
JOOMLA_DB_HOST: mysql
JOOMLA_DB_PASSWORD: example
mysql:
image: mysql:5.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
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: unicode
pool: 5
timeout: 5000
host: pg ######### LOOK HERE!
username: postgres
password:
development:
<<: *default
database: project
# 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: project_test
production:
<<: *default
database: project
Console
C:\Users\Chloe\workspace\project\src>docker-compose run web rake db:create
Starting src_pg_1 ... done
could not translate host name "pg" to address: No address associated with hostname
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "timeout"=>5000, "host"=>"pg", "username"=>"postgres", "password"=>nil, "database"=>"project"}
rake aborted!
PG::ConnectionBad: could not translate host name "pg" to address: No address associated with hostname
docker-compose version 1.20.1, build 5d8c71b2, Docker version 18.03.0-ce, build 0520e24302
Ok, I'll try to answer this:
Usually when this error appears, it probably means that running the db
container returned some errors and it stopped.
I had the same issue and after some digging found that I had
LANG='en_US.UTF-8'
LANGUAGE='en_US:en'
LC_ALL='en_US.UTF-8'
set in my environment variable and that caused the db
container to stop. Therefore as the container was not running, I had no db
host.
Here is how my docker-compose.yml
file looks like:
version: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
env_file: .env
app:
build: .
command: bundle exec puma -p 3000 -C config/puma.rb
env_file: .env
volumes:
- .:/app
ports:
- "3031:3000"
depends_on:
- db
Here is config/database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
pool: 5
username: <%= ENV['POSTGRES_USER'] %>
password: <%= ENV['POSTGRES_PASSWORD'] %>
development:
<<: *default
database: driggl_dev
test:
<<: *default
database: driggl_test
production:
<<: *default
database: driggl_prod
...and the .env
file for development:
POSTGRES_USER=driggl
POSTGRES_PASSWORD=driggl
As I had shared volumes for db data, I removed the tmp/db
folder from the repository just to be sure.
rm -rf tmp/*
then I removed all containers and images
docker rm $(docker ps -q -a) -f
docker rmi $(docker images -q) -f
Finally I spin up containers again:
docker-compose up --build
and everything finally went right.
Summary
I hope that will help anyone who'll encounter that problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With