title: Docker: Springboot container can not connect to PostgreSql Container Connection error
body: <p>I am building my first Springboot 2.0 application. I am trying to put my Springboot application into one docker container and my PostgresDB into another container.  </p>
  
  <p><strong>My Dockerfile</strong></p>
  
  <pre><code>    FROM frolvlad/alpine-oraclejdk8:slim
      VOLUME /tmp
      ADD springboot-api-demo-0.1*.jar app.jar
      RUN sh -c 'touch /app.jar'
      EXPOSE 9443
      ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/urandom -jar /app.jar" ]
  </code></pre>
  
  <p><strong>My docker-compose.yml file</strong></p>
  
  <pre><code>version: "2.1"
  
  services:
    springboot-api-demo:
      image: "fw/springboot-api-demo"
      mem_limit: 1024m
      ports:
        - "8080:8080"
      environment:
        - SPRING_PROFILES_ACTIVE=local
        - AWS_REGION=local
        - ENVIRONMENT=local
        - AUTH_ENABLED=false
    postgres:
      container_name: pgdb
      image: postgres:9.6-alpine
      environment:
      - 'POSTGRES_ROOT_PASSWORD=postgres'
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'
      ports:
      - "54321:5432"
  </code></pre>
  
  <p>I am using Springboot JPA Data 2.0 with below config data in my <strong>application.properties</strong></p>
  
  <pre><code>spring.datasource.url= jdbc:postgresql://localhost:54321/java_learning
  spring.datasource.username=postgres
  spring.datasource.password=postgres
  </code></pre>
  
  <p>I can test that Both of the Images are up. Also from docker log and docker events, I see that postgres  Container is running fine, even I can access it and also created a DB too.
  But springboot container started but i died because it could not connect to postgress and throwing error below. </p>
  
  <blockquote>
    <p>Unable to obtain connection from database: The connection attempt
    failed</p>
  </blockquote>
  
  <p>Note that my host machine already has Postgres on port 5432 thats why I did a port mapping ofr 54321:5432 on my postgres container. Here is Proof :) -</p>
  
  <pre><code>➜  springboot-api-demo git:(master) ✗ lsof -i:54321              
  COMMAND     PID             USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
  com.docke 44345 shailendra.singh   18u  IPv4 0xf62897fbdd69e31d      0t0  TCP *:54321 (LISTEN)
  com.docke 44345 shailendra.singh   21u  IPv6 0xf62897fbdd119975      0t0  TCP localhost:54321 (LISTEN)
  
  ➜  springboot-api-demo git:(master) ✗ lsof -i:5432 
  COMMAND  PID             USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
  postgres 715 shailendra.singh    5u  IPv6 0xf62897fbb43e03b5      0t0  TCP localhost:postgresql (LISTEN)
  postgres 715 shailendra.singh    6u  IPv4 0xf62897fbbaeea9bd      0t0  TCP localhost:postgresql (LISTEN)
  </code></pre>
  
  <p>I am not sure what is the problem. But my Springboot application is not able to connect my postgres container which is running fine with proper creadentials. </p>