我尝试将运行在Apache Tomcat容器中的Web服务器连接到运行另一个容器的MySQL数据库.为了做到这一点,我使用Docker的链接机制.docker run -it --name ${CONTAINER_NAME} --link db:db -p 8080:8080 -d tomcat运行容器后...
我尝试将运行在Apache Tomcat容器中的Web服务器连接到运行另一个容器的MySQL数据库.为了做到这一点,我使用Docker的链接机制.
docker run -it --name ${CONTAINER_NAME} --link db:db -p 8080:8080 -d tomcat
运行容器后,我可以看到容器已链接,环境变量已正确显示.
为了将在Tomcat容器中运行的Web应用程序连接到数据库,我使用以下配置文件:
<Context>
<Resource
name="jdbc/MYDB"
type="javax.sql.DataSource"
auth="Container"
username="user"
password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://${DB_PORT_3306_TCP_ADDR}:${DB_PORT_3306_TCP_PORT}/epcis?autoReconnect=true">
</Resource>
</Context>
现在的问题是我无法建立与数据库的连接,因为在Tomcat环境中无法识别Docker公开的环境变量.
有一种方法可以让Docker公开的这些环境变量对Apache Tomcat环境可见吗?
解决方法:
你能使用db的dns声明和硬编码引用吗?我认为/ etc / hosts文件是用db更新的,当你链接它时它的ip地址.所以你可以:
<Context>
<Resource
name="jdbc/MYDB"
type="javax.sql.DataSource"
auth="Container"
username="user"
password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql:db:3306/epcis?autoReconnect=true">
</Resource>
</Context>
我使用的另一种技术是skydns和registrator,然后你在DNS srv记录中获得ip和port.
我不记得Tomcat但它应该可以访问变量.您确定Tomcat在使用它之前评估了url定义吗?
本文标题为:java – Docker – 将Apache Tomcat Web服务器连接到MySQL服务器
基础教程推荐
- SpringBoot 整合 ElasticSearch操作各种高级查询搜索 2022-11-29
- MyBatis-Plus实现条件查询的三种格式例举详解 2023-04-17
- java程序员必会的远程debug教程 2023-03-31
- MyBatis-Plus 条件查询器的实现 2023-03-16
- Java线程池submit阻塞获取结果的实现原理详解 2023-06-23
- Java C++解决在排序数组中查找数字出现次数问题 2023-08-07
- Java Properties作为集合三个方法详解 2023-07-01
- Java线程优先级变量及功能 2022-12-16
- 解决persistence.xml配置文件修改存放路径的问题 2022-11-01
- springboot详解实现车险理赔信息管理系统代码 2022-12-12