当前位置: 首页 > 知识库问答 >
问题:

无法运行docker compose。我的Spring Boot应用程序中的yml(抛出图像问题)

庞元青
2023-03-14

我在Spring Boot应用程序中运行docker-compose.yml时遇到问题。当我运行此命令(docker-compose up-d)时,我在映像部分遇到了问题。

我试图解决这个问题,但我做不到。我怎样才能修复它?

这是我的问题如下所示。

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

这是我的项目:我的项目

这是我的docker compose。yml如下所示。

version: '3.8'
services:
  logstash:
    image: docker.elastic.co/logstash/logstash:7.15.2
    user: root
    command: -f /etc/logstash/conf.d/
    volumes:
      - ./logstash/:/etc/logstash/conf.d/
    ports:
      - "5000:5000"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    depends_on:
      - elasticsearch
  kibana:
    image: docker.elastic.co/kibana/kibana:7.15.2
    user: root
    volumes:
      - ./kibana/:/usr/share/kibana/config/
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    entrypoint: ["./bin/kibana", "--allow-root"]
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.15.2
    user: root
    volumes:
      - ./elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
  app:
    image: 'springbootelk:latest'
    build:
      context: .
    container_name: SpringBootElk
    depends_on:
      - db
      - logstash
    ports:
      - '8077:8077'
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/springbootexample?useSSL=false&serverTimezone=Turkey
      - SPRING_DATASOURCE_USERNAME=springexample
      - SPRING_DATASOURCE_PASSWORD=111111
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update
  db:
    container_name: mysql-latest
    image: 'mysql:latest'
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    volumes:
      - db-data:/var/lib/mysql

# Volumes
volumes:
  db-data:

共有1个答案

东方辉
2023-03-14

有几个问题,为什么它不起作用<第一件事-您的测试设置不正确。应用程序尝试在测试阶段连接到数据库。但是在测试阶段,还没有任何正在运行的容器。您可以正确设置它,或者从测试目录中删除MainApplicationTests类,或者通过关闭测试执行,只需添加Dmaven即可。测验跳过Dockerfile中的mvnw包命令。在这之后,你的形象将得到正确的塑造
其次,您需要允许对应用程序进行公钥检索。为此,您可以将allowPublicKeyRetrieval=true添加到jdbc url中。您可以在这里阅读更多信息:连接Java-MySQL:不允许公钥检索
这些步骤将允许您的应用程序启动(至少可以解决数据库连接问题)。但是,我发现了另一个问题。您在应用程序配置中将上下文路径设置为等于api。您还为PersonController添加了请求映射(“/api”)。要访问人员列表,您需要使用以下url:<代码>http://localhost:8077/api/api/persons 。也许,这不是你想要的。要修复它,您可以将其从任何位置移除。

 类似资料:
  • 我的程序编译了所有内容,我没有出错,但我实际上期望tomcat应该永久在端口8080上。输出中也没有Spring。在另一个项目中,我做的一切都很好。谢谢你帮助我。 我的父母: 我的tarter.class: 我的Starter-Pom: 控制台输出: 然后什么都不会发生了。谢谢你的帮助。

  • 已经应用了设备更改、电缆更改、Android studio重启、系统重启、adb重启和杀机等都没有帮助。我在sdk tools文件夹中的一个日志文件给出了这样的输出: !条目org.eclipse.osgi 4 0 201 5-09-10 00:38:33.745!消息应用程序错误!堆栈1 java.io.ioException:文件夹“C:\users\mehran%20khan.android

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 我正在使用一个spring启动应用程序,它运行我的src/main/resources/config/application。yml。 当我通过以下方式运行测试用例时: 测试代码仍在运行我的应用程序。要加载属性的yml文件。我想知道是否有可能再运行一个*。运行测试用例时的yml文件。

  • 我有一个cucumber测试: 这是一个测试,它不是在测试文件夹中定义的,而是一个seprate文件夹(作为源集,其他人创建了这个结构)。 源集(测试所在)的gradle配置如下: 看看gradle文件,有三件事, 有一个源集定义为 编译CLassPath, runTimeClassPath, srcDir已被定义为相同的 甚至resources.srcDir也在设置中(我有应用ymls) 我已经