Docker:运行Oracle并执行脚本后启动Tomcat
问题描述:
我对Docker真的很陌生并且很享受,但是,我发现运行我的应用程序时遇到了一些问题。我想运行我的应用程序,它由2个服务:Docker:运行Oracle并执行脚本后启动Tomcat
-
我想启动Oracle和运行应采取30秒以上
一些DDL和数据的脚本 我想启动Tomcat,第一步完成后启动我的战争文件,因为它没有它就不会启动。
我已经读到: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
服务。您可以使用像wait-for-it这样的脚本来执行此操作。例如:
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"
我会试试,谢谢 – quento
我应该在哪里放置wait-for-it.sh? – quento
在您的Dockerfile中使用'COPY wait-for-it.sh/usr/local/bin /'。 – Alkaline