【发布时间】:2017-01-18 10:05:47
【问题描述】:
鉴于我有以下情况:
我想将 web 应用程序部署到 Tomcat,它连接到 oracle 数据库并向用户显示数据
我需要的是以下内容:
Docker 编写 yml
Tomcat docker 镜像 - 此处部署战争
Oracle docker 镜像
fatdb jar 部署 - 我有更新打包为 fatdb jar 的 db 架构的 liquibase 脚本
解决方案可能是:
version: '2'
services:
web-tomcat:
image: tomcat:jre8
depends_on:
- db-oracle
db-oracle:
image: wnameless/oracle-xe-11g
但是,需要解决多个问题:
- 等待 oracle 服务准备就绪 - 按照 docker 文档中的建议使用等待包装器解决:wait-for-it
- 等待创建用户 - 通过等待循环解决,该循环尝试在创建用户的情况下连接到 oracle db
- 等待 liquibase fatdb 部署准备的数据库模式,然后将战争部署到 tomcat
- 不会以我启动单独的容器来进行 fatdb 部署的情况结束,之后它只会停留在 Exited (0) 状态,因为 fatdb 部署是一次性的,而不是服务
我最终创建了 entrypoint.sh 脚本,以便在部署战前准备好数据库:
java -jar fatdb.jar update
catalina.sh run
并在 tomcat 图像中覆盖入口点
是否有更好的解决方案如何在 docker-compose 中部署战争前准备数据库架构?
【问题讨论】:
标签: tomcat docker deployment docker-compose