在docker-compose中连接tomcat和mysql

2024-01-03

我正在做一个研究项目。现在我正处于将项目转移到 docker 容器的阶段。我在我的网站上放置了 tomcat,在 mysql 上放置了数据库 do docker-compose.yml。不幸的是,tomcat 中的类无法连接数据库


Java代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Waliduj {

String url="jdbc:mysql://localhost:3306/uczelnia?useTimezone=true&serverTimezone=UTC";
String username="root";
String password="121212";

public boolean Waliduje(String uname,String pass) {


    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(url,username,password);
        PreparedStatement st=con.prepareStatement("SELECT email,haslo FROM logowanie WHERE email=? AND haslo=?");
        st.setString(1,uname);
        st.setString(2,pass);
        ResultSet rs = st.executeQuery();
        if(rs.next()) {
            return true;
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException se) {
        // TODO Auto-generated catch block
        se.printStackTrace();
    }

    return false;
}
}

Dockerfile代码

FROM tomcat:8.0.41-jre8
COPY ./webapp /usr/local/tomcat/webapps/webapp
CMD ["catalina.sh", "run"]

docker-compose.yml 代码

version: '3'
services: 
    web:
        build: .
        ports:
         - "8080:8080"
        links:
         - "db:uczelnia"
    db:
        image: mysql
        environment:
         MYSQL_ROOT_PASSWORD: 121212
         MYSQL_DATABASE: uczelnia

        ports:
         - "3306:3306" 
    PhpMyAdmin:
        image: nazarpc/phpmyadmin
        ports:
         - "8090:80"
        links:
         - db:mysql

错误代码

web_1         | com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
web_1         |
web_1         | The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
web_1         |         at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:172)
web_1         |         at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
web_1         |         at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
web_1         |         at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
web_1         |         at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
web_1         |         at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
web_1         |         at java.sql.DriverManager.getConnection(DriverManager.java:664)
web_1         |         at java.sql.DriverManager.getConnection(DriverManager.java:247)
web_1         |         at com.login.walidacja.Waliduj.Waliduje(Waliduj.java:20)
web_1         |         at com.login.Login.doPost(Login.java:27)
web_1         |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
web_1         |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
web_1         |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
web_1         |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
web_1         |         at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
web_1         |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
web_1         |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
web_1         |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
web_1         |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
web_1         |         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
web_1         |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
web_1         |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
web_1         |         at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
web_1         |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
web_1         |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
web_1         |         at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
web_1         |         at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
web_1         |         at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
web_1         |         at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
web_1         |         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
web_1         |         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
web_1         |         at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
web_1         |         at java.lang.Thread.run(Thread.java:745)
web_1         | Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
web_1         |
web_1         | The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
web_1         |         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
web_1         |         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
web_1         |         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
web_1         |         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
web_1         |         at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)
web_1         |         at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:103)
web_1         |         at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:149)
web_1         |         at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:165)
web_1         |         at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:92)
web_1         |         at com.mysql.cj.NativeSession.connect(NativeSession.java:152)
web_1         |         at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:982)
web_1         |         at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:852)
web_1         |         ... 30 more
web_1         | Caused by: java.net.ConnectException: Connection refused (Connection refused)
web_1         |         at java.net.PlainSocketImpl.socketConnect(Native Method)
web_1         |         at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
web_1         |         at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
web_1         |         at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
web_1         |         at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
web_1         |         at java.net.Socket.connect(Socket.java:589)
web_1         |         at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:173)
web_1         |         at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:66)
web_1         |         ... 33 more

附加信息:

  • 我正在 Windows 10 上工作,所以 docker 也在 Windows 上。
  • 我对拼写错误表示歉意,但我来自波兰,所以英语不是 我的

通过撰写文件,您的数据库服务将可以通过以下方式在网络上引用db。 links 关键字不是必需的,除非您只需要为容器使用不同的名称。如果你改变你的java代码来连接jdbc:mysql://db:3306/uczelnia?useTimezone=true&serverTimezone=UTC它应该按预期工作。

https://docs.docker.com/compose/networking/ https://docs.docker.com/compose/networking/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在docker-compose中连接tomcat和mysql 的相关文章

  • 在 Java 中将字符串复制到文件的开头

    我想将一个字符串写入文件的开头 我该怎么做 我根本不知道如何添加字符串 这就是我到目前为止所做的 public static void prepend String filename String data throws IOExcepti
  • 是否可以在具有高山风味的 docker 容器内构建 AOSP?

    我对 AOSP 非常陌生 我正在尝试在 Docker 上设置完整的 AOSP 以构建 Docker 映像 例如 Alpine 或 Ubuntu 映像 如果不可能 请让我知道无法在内部设置 AOSP 的原因泊坞窗图像 或者我需要编写 Dock
  • 多人/单人测验游戏的数据库设计

    我在这里看到了很多问题 但没有人适合我的问题 我正在尝试创建一个可扩展的 ER 模型 如果我想添加更多数据 则不会破坏几乎任何东西 所以我尝试创建的是 有两种类型的用户 比如说管理员和工作人员 他们有不同的角色 管理员可以对问题进行 CRU
  • 获取文本文件中行的字节偏移量?

    我有一个文本文件 例如 one two three four five 我需要获取文件中每一行的偏移量 我如何在 Java 中做到这一点 我搜索了一些 I O 库 如 BufferedReader 和 RandomAccessFile 但我
  • Cognito SRP 身份验证 JAVA SDK

    我正在尝试使用 Cognito 验证 Java 应用程序 我在Python中使用了warrant库 效果非常好 但我现在想在java中做同样的事情 我的 Python 函数用于身份验证warrant https github com cap
  • 在 Selenium Grid 中注册 PhantomJS 节点时出错

    我有以下问题 我成功启动了 Selenium Grid hub java jar selenium server standalone 2 53 0 jar role hub 之后我尝试使用以下命令启动 PhantomJS 节点 phant
  • 当子查询具有组列时,MySQL 8 不使用 INDEX

    我们刚刚从 mariadb 5 5 迁移到 MySQL 8 一些更新查询突然变得很慢 经过更多调查 我们发现当子查询有组列时 MySQL 8不使用索引 例如 下面是一个示例数据库 桌子users维护每种类型用户的当前余额 表 帐户 维护每天
  • 控制启动时的竞争条件

    我有一些代码想要执行一些一次性初始化 但这段代码没有明确的生命周期 因此在初始化完成之前 我的逻辑可能会被多个线程调用 所以 我想基本上确保我的逻辑代码 等待 直到初始化完成 这是我的第一次剪辑 public class MyClass p
  • 如何修复运行 Android 模拟器时出现 GPU Driver Issue 错误

    我的 Android 模拟器几周前运行良好 但现在出现错误 当我运行代码时 GPU 驱动程序问题错误对话框与模拟器一起弹出 当我单击 确定 时 Android 模拟器不会按预期运行应用程序 错误如下 Your GPU driver info
  • 具有多个字符串的列表视图

    我正在尝试创建一个包含多个字符串的列表视图 现在我有一个可以实现的功能 while i lt 10 GETS DATA FROM WEBPAGE ETC a DATAFROMWEBPAGE1 b DATAFROMWEBPAGE2 c DAT
  • 如何在 HashiCorp Vault 中安全地存储 Spring Boot 应用程序的机密?

    我已阅读以下教程 保险库配置 https spring io guides gs vault config 好的 我们安装了 Vault 服务器并放置了 2 对秘密属性 vault kv put secret gs vault config
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • CompletableFuture SupplyAsync

    我刚刚开始探索 Java 8 的一些并发特性 让我有点困惑的一件事是这两个静态方法 CompletableFuture
  • 数据库设计 - “推”模型,或写时扇出

    背景信息 我正在尝试检索我关注的人的图像 按最新时间排序 它就像 Twitter 新闻源 显示您朋友的最新动态 Plans 目前我只需要考虑一项 那就是图像 将来我计划分析用户的行为并将他们可能喜欢的其他图像添加到他们的提要中等 http
  • Thread.interrupt() 和 Thread.interrupted() 到底是如何工作的? [复制]

    这个问题在这里已经有答案了 从设置线程状态的角度来看 我不清楚这两种方法 Java 文档说 Thread interrupt 设置线程中断状态标志 调用 Thread interrupted 方法给出线程的状态并清除该标志 当这在实际场景中
  • CXF 增加连接池大小而不更改 http.maxConnections

    最近我被要求将 CXF 配置为与我们旧的 XFire 服务相同的参数 这些参数之一是Keep Alive timeout 60 max 20 然而 我做了一些研究 看来 CXF 使用 JVMHttpURLConnection引擎盖下的对象
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • Java:易失性足以使类线程安全?

    我有一个关于 Java 中 volatile 语句的问题 请看这个构造的例子 class Master Foo is a class with thread safe methods public volatile Foo foo clas
  • 确保 MAVEN_HOME 设置正确

    这里是 Java 和 Maven 菜鸟 使用 OSX 10 8 并使用 HomeBrew 安装 Maven 1 如果我说which mvn我会得到这个 usr local bin mvn 2 如果我说echo MAVEN HOME我不会得到
  • MySql 西班牙语字符数据

    我有一个包含西班牙语字符的数据库 为了填充数据库 我从字符编码 UTF 8 的客户端页面获取值 当我在 mySql 数据库中插入值时 行包含更改的数据 例如 如果我插入 M xico 数据库中的条目是 M xico 其影响是当我对指定 M

随机推荐

  • ASP.NET MVC 是否已准备好用于业务应用程序(集成第 3 方控件/组件)?

    我的公司已经开发 并且仍在继续开发 一个大型 ASP NET 业务应用程序 我们的平台是 ASP NET 2 0 使用一些 ASP NET Ajax 是广泛使用第三方组件 如网络网格 组合框 树视图 日历和日程安排控件等 现在 我对 ASP
  • 使用linq生成直接更新而不需要select

    大家好 我仍在学习 LINQ 所以如果这很幼稚 请原谅我 当您直接处理 SQL 时 您可以生成带有条件的更新命令 而无需运行 select 语句 当我使用 linq 时 我似乎遵循以下模式 选择实体 修改实体 提交更改 我想做的是使用 li
  • 为什么允许从一个构造函数调用另一个构造函数?

    我正在查看有关 SO 的其他问题 但我没有真正看到我的问题的解释 我读到从另一个构造函数调用构造函数 使用 this 关键字 是valid 但我不明白why这是有效的 以前 我认为每个对象只能有一个构造函数 构造函数链接似乎打破了这一逻辑
  • PostgreSQL 删除触发器

    我正在 PGAdminIII 上创建一个触发器 我想在其中删除另一个表上具有外键的行 但是我遇到了语法错误 并且找不到问题所在 CREATE TRIGGER clienteDelete BEFORE DELETE ON cliente FO
  • OCR应用前的图像清理

    过去几个小时我一直在尝试 PyTesser 它是一个非常好的工具 关于 PyTesser 的准确性 我注意到以下几点 包含图标 图像和文本的文件 准确度 5 10 仅包含文本的文件 已删除图像和图标 准确率 50 60 拉伸文件 这是最好的
  • 打印带有演示者备注的 xaringan 幻灯片

    是否可以打印带有演示者备注的 Xaringan 幻灯片 我知道我可以使用这些方法打印幻灯片 https github com yihui xaringan wiki Export Slides to PDF https github com
  • 如何将 Leiningen 模板部署到 Clojars?

    我在本地计算机上创建了一个 Leiningen 项目 然后通过执行以下操作将其转换为模板 lein create template webdb 然后我安装模板 cd webdb lein install 这允许我在本地基于模板创建项目 le
  • 缺乏后视的解决方法?

    回答另一位用户的问题 https stackoverflow com q 28044217 3725745我将下面的正则表达式组合在一起来匹配字符串中的数字 b 0 9 0 9 b 在提供答案后 我注意到 如果由于 b 与句点字符匹配而导致
  • GSON 2.0+ 从两个不同的序列化字段名称之一反序列化字段

    在我的 Java 类中 我有一个声明如下的字段 protected double a 0 0 在反序列化以重构此类的 JSON 中 该字段可以显示为两个不同名称之一 遗留问题 例如 JSON 字段可能如下所示 a 9 57 或者像这样 d
  • 获取指向字节数组的指针的不安全方法

    此行为在 C 中有效吗 public class MyClass private byte data public MyClass this data new byte 1024 public unsafe byte getData byt
  • Scrapy 和 Python。名称错误

    我正在尝试计算当前的货币汇率 请您看一下是否发现错误 items py import scrapy class CurrItem scrapy Item country scrapy Field currency scrapy Field
  • 如何使用系统属性替换 Typesafe 配置文件中的占位符?

    我需要参考java io tmpdir在我的 application conf 文件中 我打印了我的配置内容 val c ConfigFactory load System err println c root render 它使它像 de
  • R 上下文、环境和带有“.Call”的调用堆栈

    有版本吗parent frame or sys calls或其他可以直接从 C 代码调用的通用上下文函数 Call 环顾四周Rinternals h等等 我似乎找不到类似的东西 我能想到的最好的办法是 my fun lt function
  • 如何根据js中的父位置动态调整div的大小

    我一直在编写一个代码 该代码展示了如何动态调整 div 的大小 然而 代码被困在 1 个元素上 我做了一些工作来转换为多个 div 调整器 现在 在调整大小时 鼠标和 div 之间会出现一个空格 我的目标是确保根据父位置 使用精确的鼠标位置
  • 如何使用 urllib2 使用带身份验证的代理访问 ftp/http 服务器

    更新 请参阅我的解决方案的评论 我的Python代码使用urllib2使用用户名和密码通过代理访问 FTP 服务器 我同时使用urllib2 ProxyHandler and a urllib2 ProxyBasicAuthHandler通
  • 如何从 Flutter-web 中的小部件创建图像?

    在谷歌地图上显示自定义小部件谷歌地图颤振 https pub dev packages google maps flutter我使用一个非常方便的功能来翻译任何Widget 包括那些包含图像的 到Image 然后我将其翻译成Uint8Lis
  • 将时间分为小时、分钟和秒

    我必须把时间分成小时 分钟和秒 例如 如果时间是 09 11 21 我需要它为 09 小时 11 分 21 秒 我有两个文本框来输入打卡时间和休息时间 之后我想在一个新的文本框中获取结果 结果是根据打卡时间和休息时间之间的差值计算的 例如
  • 如何禁用 Express BodyParser 进行文件上传 (Node.js)

    我使用 Node js Express 构建一个 Web 应用程序 我发现 Express 公开的 connect BodyParser 在大多数情况下非常有用 但是 我希望能够更精细地访问多部分表单数据帖子 我需要将输入流通过管道传输到另
  • 使用Python计算txt文件中的行数(不包括空白行)

    我希望计算 txt 文件中的行数 如下所示 apple orange pear hippo donkey 其中有用于分隔块的空行 根据上面的示例 我正在寻找的结果是五 行 我怎样才能实现这个目标 作为奖励 如果能知道有多少块 段落就好了 因
  • 在docker-compose中连接tomcat和mysql

    我正在做一个研究项目 现在我正处于将项目转移到 docker 容器的阶段 我在我的网站上放置了 tomcat 在 mysql 上放置了数据库 do docker compose yml 不幸的是 tomcat 中的类无法连接数据库 Java