[英]Connecting to postgres database generated from docker-compose yaml
[英]Connecting two a database in a another container with docker-compose
我正在嘗試設置一個 docker-compose,其中一個容器有數據庫,另一個容器有應用程序。 據我所知,我需要將兩個容器與網絡連接起來。
version: "3"
services:
psqldb:
image: "postgres"
container_name: "psqldb"
environment:
- POSTGRES_USER=usr
- POSTGRES_PASSWORD=pwd
- POSTGRES_DB=mydb
ports:
- "5432:5432"
expose:
- "5432"
volumes:
- $HOME/docker/volumes/postgres/:/var/lib/postgresql/data
networks:
- backend
sbapp:
image: "dsb"
container_name: "dsb-cont"
ports:
- "8080:8080"
expose:
- "8080"
depends_on:
- psqldb
networks:
- backend
networks:
backend:
我還嘗試將網絡驅動程序設置為bridge
(這並沒有改變最終結果)
networks:
backend:
driver: bridge
我正在使用以下 url 連接數據庫
spring.datasource.url=jdbc:postgresql://psqldb:5432/mydb
我還嘗試公開端口並使用localhost
進行連接
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
我還嘗試使用端口 5433 而不是 5432。
無論我使用什么組合,我都會收到以下錯誤
Connection to psqldb:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
在我的應用容器中。 但是,我的數據庫容器仍然啟動,我可以使用 url 從主機正常連接到它
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
如果我完全從 docker-compose.yml 中刪除 psqldb 容器(並使用后一個連接 url),我也可以從主機連接到數據庫。
如果它有任何區別,我正在使用 Spring Boot 與 Dockerfile 一起應用
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
我正在使用命令構建圖像
docker build --build-arg JAR_FILE=target/*.jar -t dsb .
我在兩個容器設置中缺少什么?
我遇到的問題是 docker depends_on
僅按定義的順序啟動容器,但不等待它們實際准備好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.