我有3个服务。 DB,API,Liquibase。 API依赖于DDB和Liquibase。以下是我的compose.yml。我面临的问题是,即使我在API服务下有wait-for.sh脚本,该脚本等待DB端口可用于连接,但端口准备好进行连接时,它就会出现。但是创建Db模式并应用DB相关更改的liquibase仍在开发中。因此,由于liquibase服务仍未创建架构,因此API服务无法连接到数据库。如何让API服务等到liquibase在数据库上应用所有更改。
version: '3'
services:
db:
build: drs-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: drs-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
ports:
- "3307:3306"
drs-api:
container_name: drs-api
hostname: drs-api
domainname: XX.com
build:
context: ./drs-api
args:
DRS_API_URL: XX/${DRS_API_VERSION}
DRS_API_WAR: drs-web-${DRS_API_VERSION}.war
DRS_CLIENT_URL: CC/drs-client/${DRS_CLIENT_VERSION}
DRS_CLIENT_WAR: drs-client-${DRS_CLIENT_VERSION}.war
ports:
- "8096:8443"
depends_on:
- db
- drs-liquibase
command: [/usr/local/bin/wait-for-it.sh]
links:
- "drs-liquibase"
drs-liquibase:
container_name: drs-liquibase
build:
context: ./drs-liquibase
environment:
DRS_CLIENT_VERSION : ${DRS_LIQUIBASE_VERSION}
depends_on:
- db
links:
- "db"
command: ["/usr/local/bin/wait_for_liquibase.sh"]
答案 0 :(得分:1)
您可以通过共享卷使用某种临时文件。
调整等待以检查迁移准备就绪时是否存在创建的文件,或者等待直到文件被迁移服务删除为止。