使用 mysql db 运行 spring boot 应用程序的 docker compose 时退出状态 1

问题描述 投票:0回答:1

我正在尝试文档化 Spring Boot 的应用程序,它也使用 mysql 数据库 下面是docker文件

FROM maven:3.8.3-openjdk-17 AS build
EXPOSE 8081
ADD /target/oks-0.0.1-SNAPSHOT.jar oks-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","oks-0.0.1-SNAPSHOT.jar"]

application-develop.properties如下

spring.datasource.url=jdbc:mysql://localhosts:3306/oks?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password = roots
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
#spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
server.port= 8081

Docker 撰写文件

version: "3.7"
services:
  mysql:
    image: mysql:5.6.33
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: roots
      MYSQL_DATABASE: oks
  api_service:
    build: ./oks-api
    ports:
      - 8081:8081
    depends_on:
      - mysql
    environment:
      spring.datasource.url: jdbc:mysql://mysql/oks?characterEncoding=UTF-8
      spring.datasource.username: root
      spring.datasource.password: roots

下面是我面临的错误

compose-api_service-1  |        ... 59 common frames omitted
compose-api_service-1  | Caused by: java.net.ConnectException: Connection refused
compose-api_service-1  |        at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
compose-api_service-1  |        at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na]
compose-api_service-1  |        at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na]
compose-api_service-1  |        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na]
compose-api_service-1  |        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na]
compose-api_service-1  |        at java.base/java.net.Socket.connect(Socket.java:633) ~[na:na]
compose-api_service-1  |        at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153) ~[mysql-connector-j-8.3.0.jar!/:8.3.0]
compose-api_service-1  |        at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:62) ~[mysql-connector-j-8.3.0.jar!/:8.3.0]
compose-api_service-1  |        ... 62 common frames omitted
compose-api_service-1  |
compose-api_service-1 exited with code 1

我尝试了几种方法,但都失败了,提前谢谢你

mysql spring-boot docker maven dockerfile
1个回答
0
投票

尝试在 application-develop.properties 中添加 spring.host= 。因为我认为既然你没有在docker中使用network_mode: host,它可能找不到要连接的目标。

© www.soinside.com 2019 - 2024. All rights reserved.