我有一段时间有一个问题,我还没有找出为什么会发生。
我试图建立一个“instagram克隆”来研究Golang,但我不知道为什么我的flyway不能连接到我的postgresql。
下面是我的 Docker 组成:
version: "3.8"
services:
server:
build: .
ports:
- "3000:3000"
volumes:
- .:/usr/src/app
db:
image: postgres:14.5
environment:
POSTGRES_DB: instagram
POSTGRES_USER: instagram
POSTGRES_PASSWORD: instagram
ports:
- "5432:5432"
flyway:
image: flyway/flyway:9.9.0
entrypoint:
- sh
- -c
- flyway -defaultSchema=public -baselineOnMigrate=true -url=jdbc:postgresql://localhost:5432/instagram -user=instagram -password=instagram migrate
depends_on:
- db
volumes:
- ./data/sql:/flyway/sql
数据库似乎是正确创建的,我可以通过DBeaver访问它,但是,我的flyway无法连接到它。
我在一个WSL2上运行它,我已经清除了我的docker,删除了每一个容器,卷和映像一次或两次。我运行它与docker compose up db
其次是docker compose up flyway
。有人有什么想法吗?
编辑:这是我的docker组成文件后的决议,任何人都可能需要它
version: "3.8"
services:
server:
build: .
ports:
- "3000:3000"
volumes:
- .:/usr/src/app
db:
image: postgres:14.5
env_file:
- ".env"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U instagram"]
interval: 10s
retries: 5
ports:
- "5432:5432"
flyway:
image: flyway/flyway:9.9.0
entrypoint:
- sh
- -c
- flyway -defaultSchema=public -baselineOnMigrate=true -connectRetries=60 -url=jdbc:postgresql://db:5432/instagram -user=instagram -password=instagram migrate
depends_on:
- db
volumes:
- ./data/sql:/flyway/sql
1条答案
按热度按时间fnx2tebb1#
有时DB容器需要几秒钟才能启动。在命令中使用
-connectRetries=60
标志,以便在x秒内每秒自动重试。检查GitHub Flyway docker使用运行状况检查:
此外,您可以尝试在命令中的无限循环中等待: