【问题标题】:jdbc4.CommunicationsException when docker run jhipster application imagedocker 运行 jhipster 应用程序映像时出现 jdbc4.CommunicationsException
【发布时间】:2018-04-18 13:32:43
【问题描述】:

我的 jhipster 后端应用程序使用 mysql 和 elasticsearch,我使用“./mvnw package -Pprod dockerfile:build -DskipTests”成功构建了一个 docker 镜像,然后我登录并将镜像推送到私有注册表,然后打开生产 Centos 7,我登录该注册表并成功提取图像。 然后我用 sudo 发出命令“Docker run iamgeid”,并出现以下异常:

2018-04-17 15:28:42.613  INFO 6 --- [           main] com.james.app.HdBackApp                  : The following profiles are active: prod
2018-04-17 15:28:50.061  INFO 6 --- [           main] com.james.app.config.WebConfigurer       : Web application configuration, using profiles: prod
2018-04-17 15:28:50.072  INFO 6 --- [           main] com.james.app.config.WebConfigurer       : Web application fully configured
2018-04-17 15:28:52.201 ERROR 6 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

在官网:https://www.jhipster.tech/docker-compose/,我注意到命令:

docker-compose -f src/main/docker/app.yml up

但是在生产中,没有这样的文件,我的问题是(就我而言): 1. 是否有一个命令供所有人运行后端,包括自动拉取依赖项,如 mysql、elasticsearch 等 2. 如果没有这个命令,具体的运行方式是什么,注意:我在构建镜像之前已经在docker文件夹下的文件(如app.yml,mysql.yml等)中设置了正确的参数。

感谢和问候!

【问题讨论】:

    标签: docker jhipster


    【解决方案1】:

    您的错误意味着您的应用程序找不到 MySQL 数据库。

    在生产中,如果你只有 Docker,没有 Docker Compose,你需要手动:

    • 在具有适当环境变量的特定 Docker 网络中启动您的 MySQL 容器,以创建用户和数据库
    • 在同一网络中启动您的 Elasticsearch 容器
    • 在同一个网络中启动您的应用程序容器,使用所有特定的 Spring 配置,与 MySQL 和 Elasticsearch 相关

    这将是很大的docker run... 命令。

    所以,最好也有 Docker-Compose,这样你就可以在这个 app.yml 文件中拥有所有这些默认配置。 只需将 app.yml、mysql.yml 和 elasticsearch.yml 放入您的生产环境中。不要忘记自定义它们,因为我们提供了一个基本配置来帮助用户开始。

    您也可以尝试使用 docker-compose 子生成器,使用 jhipster docker-compose。对于更高级的使用,请尝试 Rancher 或 Kubernetes。

    【讨论】:

    • 我将整个 docker 文件夹(app.yml、mysql.yml 等)复制到生产环境,并安装 docker-compose,现在所有依赖项都已拉取并准备就绪,但仍有其他问题,将做进一步搜索。
    • 如果您需要帮助,请不要犹豫添加 cmets
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2019-01-12
    • 2022-08-10
    • 2016-11-24
    相关资源
    最近更新 更多