Avatar
1
Nguyễn Hiếu Beginner
Run Docker trong spring boot
Em chào mọi người ạ. Em bị lỗi như ảnh khi run docker ạ .Nó ghi là:"Exception during pool initialization.

org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections." . Mong mọi người chỉ em cách giải quyết ạ .Em cảm ơn .

  • Answer
Remain: 5
3 Answers
Avatar
tvd12 Beginner
tvd12 Beginner
Trong image của em đã có postgresql chưa, hay em đang connect với postgresql ở ngoài docker?

Em có thể share file Dockerfile được không em?

  • 1
  • Reply
Avatar
  • 0
  • Reply
  1. Nhìn thế này có thể thấy em chưa include postgresql vào trong docker image rồi em ạ.
  2. Em có thể theo hướng dẫn này để add thêm postgresql xem sao?
  3. Lần tới post nội dung file thay vì chụp ảnh em nhé.
https://docs.docker.com/samples/postgresql_service/
 –  tvd12 1653726009000
Avatar
ducnt114 Beginner
ducnt114 Beginner
  • Lỗi này là do em đang để cấu hình postgres là localhost:5432, tuy nhiên khi chạy docker container lên thì trong docker container đó chỉ có code api service của e thôi, không có postgres ở trong
  • Có 2 cách để fix, 1 là em add thêm postgres vào trong cùng docker container của api, cách 2 là phải start thêm 1 docker container chạy postgres sau đó cấu hình để api kết nối sang docker container này. 99% thực tế sẽ dùng cách thứ 2.
  • Nếu e muốn thử ở local, thì có thể dùng docker compose cho tiện, file docker compose nó sẽ có dạng
version: "3.7"
services:
  database:
    image: postgres
    restart: always
    env_file:
      - .env
    ports:
      - "5432:5432"
    volumes:
      - data:/var/lib/postgresql/data
  server:
    depends_on:
      - database
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      DB_HOST: database
      DB_PORT: 3306
      DB_USER: root
      DB_PASSWORD: mauFJcuf5dhRMQrjj
      DB_NAME: quotes
    networks:
      - default
    ports:
    - "8080:8080"
volumes:
  data:

Để ý có 2 service là "database" và "server", trong đó server sẽ start sau database, và kết nối đến db thông qua biến môi trường là DB_HOST: database

 

  • 1
  • Reply
dạ vâng em cảm ơn anh ạ  –  Nguyễn Hiếu 1654565794000