title: Spring Boot, PostgreSQL, and Docker - Connection Refused whil Running in Container
body: <p>I am attempting to build a "service" consisting of a Spring Boot application and PostgreSQL database. I have been able to access the database (running in a container) from the Spring Boot app while the Spring Boot application was running on my local machine. Now, when I attempt to move the Spring Boot application to a container, I am received the following error:</p>
  
  <pre><code>inventory_1  | 2018-01-20 18:43:06.108 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection] with root cause
  inventory_1  |
  inventory_1  | java.net.ConnectException: Connection refused (Connection refused)
  </code></pre>
  
  <p>However, I am able to connect to DB from my local machine:
  <code>psql -h localhost -p 5000 -U kelly_psql -d leisurely_diversion</code></p>
  
  <p>My application.properties file:</p>
  
  <pre><code>spring.jpa.hibernate.ddl-auto=none
  spring.jpa.show-sql=false
  spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
  spring.datasource.url=jdbc:postgresql://localhost:5432/leisurely_diversion
  spring.datasource.username=kelly_psql
  spring.datasource.password=pass
  spring.datasource.driver-class-name=org.postgresql.Driver
  </code></pre>
  
  <p>My docker-compose file:</p>
  
  <pre><code>    # Use postgres/example user/password credentials
  version: '3.2'
  
  services:
    db:
      image: postgres
      ports:
        - 5000:5432
      environment:
        POSTGRES_PASSWORD: example
      volumes:
        - type: volume
          source: psql_data
          target: /var/lib/postgresql/data
      networks: 
        - app
      restart: always
    inventory:
      image: kellymarchewa/inventory_api
      depends_on:
          - db
      ports:
        - 8080:8080
      networks:
        - app
      restart: always
  volumes:
    psql_data:
  networks: 
    app:
  </code></pre>
  
  <p>My Dockerfile (from the <a href="https://spring.io/guides/gs/spring-boot-docker/" rel="noreferrer">Spring website</a>)</p>
  
  <pre><code>FROM openjdk:8-jdk-alpine
  VOLUME /tmp
  ARG JAR_FILE
  ADD ${JAR_FILE} app.jar
  ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  </code></pre>
  
  <p>I suspect the issue lies in a misunderstanding (on my part) of Docker or containers, but I am not sure. Any advice would be appreciated.</p>