Docker:在运行Oracle和脚本之后启动Tomcat

我对Docker真的很陌生,并且很享受,但是,我发现运行我的应用程序时遇到了一些问题。 我想运行由2个服务组成的应用程序:

  1. 我想启动Oracle并运行一些DDL和DATA脚本,这些脚本需要30秒以上

  2. 我想在第一步完成后启动Tomcat并启动我的war文件,因为如果没有它,启动将不会启动。

我已经读了: docker-wait ,这不是我正在等待,因为我应该执行一些脚本后,我的数据库将在指定的端口上可用。

据我所知,启动multiservises应用程序的正确方法是使用docker compose

这里是我现在docker-compose.yml

 version: '2' services: web: build: Server ports: - "8080:8080" depends_on: - oracle oracle: build: Oracle ports: - "1521:1521" 

depends_on只是让我来订购应用程序的开始,没有更多。

对于Tomcat和Oracle,我使用的是Docker Hub中最受欢迎的图片。

Oracle启动并执行脚本后,如何才能正确启动Tomcat?

depends_on只检查容器是否正在运行,而不是它内部的服务已经准备好接受请求。 你想要的只是当你的oracle服务准备好时,你的web服务才能启动。 你可以使用一个像等待它的脚本来做到这一点。 例如:

 version: '2' services: web: build: Server ports: - "8080:8080" depends_on: - oracle command: wait-for-it.sh oracle:1521 --timeout=8 -s -q -- myservercmd oracle: build: Oracle ports: - "1521:1521"