gpt4 book ai didi

mysql - 使用docker-compose无法在同一网络中连接mysql和spring boot

转载 作者:行者123 更新时间:2023-12-02 19:21:02 28 4
gpt4 key购买 nike

任何帮助将不胜感激。
我试图在两个容器中运行mysql和spring-boot应用程序,但是在同一个netowrk中。
使用以下命令,两个容器相互通信。
mysql命令docker run --name mysql-local --network=spring-boot-network -p 4000:3306 -d -e MYSQL_ROOT_PASSWORD=password -e MYSQL_USER=root-user -e MYSQL_PASSWORD=password -e MYSQL_DATABASE=testdb mysql 应用程序命令docker run --network=spring-boot-network -p 8080:8080 --name test-app -e RDH_HOSTNAME:mysql-local -e RDS_PORT:4000 -e RDS_USER:root-user -e -e RDS_PASSWORD:password 171ce195f461
使用上述两个docker命令,在 spring-boot-network 中创建了两个容器,它们可以相互通信。
我尝试使用docker-compose时出现问题。
我通过了与命令行相同的环境,但是我的应用拒绝与mysql连接。

我正在使用Spotify插件创建图像。

<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.3</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>rajesh132/test-docker</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>

当我启动容器时,创建并启动了mysql容器。我也可以使用mysqlsh客户端和mysql工作台连接到它。但是,我无法连接到我的应用程序。以下是我在项目中使用的属性和docker文件。
Docker文件
ADD target/docker-test.jar docker-test.jar
ENTRYPOINT ["java", "-jar", "docker-test.jar"]

Docker Compose文件
version: '3.7'
services:
spirng-boot-test-application:
image: rajesh132/test-docker:0.0.1-SNAPSHOT
#build:
#context: .
#dockerfile: Dockerfile
ports:
- "8080:8080"
restart: always
depends_on: # Start the depends_on first
- mysql-app
environment:
RDS_HOSTNAME: mysql-app
RDS_PORT: 4000
RDS_DB_NAME: testdb
RDS_USERNAME: test-user
RDS_PASSWORD: password
networks:
- web-application-network

mysql-app:
image: mysql
ports:
- "4000:3306"
restart: always
environment:

MYSQL_ROOT_PASSWORD: password
MYSQL_USER: test-user
MYSQL_PASSWORD: password
MYSQL_DATABASE: testdb
volumes:
- mysql-database-data-volume:/var/lib/mysql
networks:
- web-application-network

# Volumes
volumes:
mysql-database-data-volume:

networks:
web-application-network:

application.yml
  datasource:
# use this url for localhost
#use docker container name instead 'localhost'
# url: jdbc:mysql://localhost:3306/authorizationDb?createDatabaseIfNotExist=true
url: jdbc:mysql://${RDS_HOSTNAME:localhost}:${RDS_PORT:3306}/${RDS_DB_NAME:test}?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true
username: ${RDS_USER:root}
password: ${RDS_PASSWORD:password}
driver-class-name: com.mysql.cj.jdbc.Driver
initialization-mode: always
tomcat:
test-on-borrow: true
validation-query: SELECT 1
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
ddl-auto: update
properties:
hibernate:
show_sql: true
format_sql: true
database-platform: org.hibernate.dialect.MySQL8Dialect

logging:
level:
org:
hibernate:
type: trace

我关注了那么多博客和文档,但是成功建立了许多博客。任何帮助,不胜感激。

最佳答案

您的RDS_PORT: 4000必须改为RDS_PORT: 3306

将容器端口公开为“4000:3306”时,只能在主机上使用端口4000。在容器网络内,您需要使用3306。

关于mysql - 使用docker-compose无法在同一网络中连接mysql和spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810341/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com