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 .
<img class="alignnone size-full wp-image-5944" src="https://stackask.com/wp-content/uploads/2022/05/1.png" alt="" />
Remain: 5
3 Answers
tvd12
Enlightened
tvd12
Enlightened
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
Nguyễn Hiếu
Beginner
Nguyễn Hiếu
Beginner
<img class="alignnone size-full wp-image-5961" src="https://stackask.com/wp-content/uploads/2022/05/1-1.png" alt="" />
-
0
ducnt114
Pundit
ducnt114
Pundit
- 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