我有三个服务。DB、API、Liquibase。API依赖于DDB和Liquibase。下面是我的compose.yml。我面临的问题是,即使我在API服务下有wait-for.sh脚本,等待DB端口可用于连接,但一旦端口准备好连接,它就会出现。但创建数据库模式并应用与数据库相关的更改的liquibase仍在开发中。因此,API服务不能连接到DB,因为该模式仍然不是由liquibase服务创建的。如何让API服务等待,直到liquibase将所有更改应用到DB上。
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"]发布于 2018-07-27 15:45:48
您可以通过共享卷使用某种临时文件。
调整wait-for以检查在迁移准备就绪时创建的文件是否存在,或者等待迁移服务删除文件。
https://stackoverflow.com/questions/51550576
复制相似问题