DEV Community

Discussion on: Modern Rails app boilerplate with React + TypeScript + Docker Compose

Collapse
 
zsilverzweig profile image
zsilverzweig

I had trouble with some of the Gems. I removed Gemfile.lock and ran Bundle Update. Also had to install RVM to manage Ruby Versions.

Next problem: Can't get PG to run correctly (though admittedly I'm very bad at this sort of task). Here is my error:

could not translate host name "db" to address: Name or service not known
Couldn't create 'myapp_development' database. Please check your configuration.
rake aborted!
PG::ConnectionBad: could not translate host name "db" to address: Name or service not known

Collapse
 
seanbjornsson profile image
Sean Björnsson • Edited

Not sure if you got this to work zsilverzweig, but I figured I'd comment here in case anyone else comes upon this post.
I had to add the following to the docker-compose.yml file to get this to work:

Under the db service

    ports:
      # expose 5432
      - 5432:5432
      # I honestly can't remember if this was necessary, 
      # but I also have these environment variables set.
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: ${DB_PASS}
      POSTGRES_DB: db

in the backend service:

    environment:
      # THIS IS KEY. I pass in docker-machine ip as the DB_HOST 
      # when I run docker-compose. this is necessary because 
      # docker-machine is running on virutalbox, and so localhost 
      # doesn't work with any of these, you need to be referencing 
      # the external IP of the virtualbox.
      # ex: DB_HOST=$(docker-machine ip) docker-compose up backend
      DB_HOST: ${DB_HOST}
      # I did this so I could link the db pass with the one given the db service  
      # above. Not setting a password didn't work for me, but in theory it should. 
      DB_PASS: ${DB_PASS}

The biggest issue I had was figuring out that the virtualbox IP needed to be referenced directly. Once I figured that out, I could at least log onto the psql console and change the password.