我有一个问题,码头和容器应用程序没有连接到mysql数据库运行在一个容器内的同一个码头网络。我的docker-compose.yml看起来是这样的:
version: '3.8'
services:
mysqlserver:
image: mysql:5.7.24
container_name: mysql_app
networks:
- somenetwork
ports:
- "5647:3306"
environment:
MYSQL_DATABASE: database
MYSQL_USER: USER
MYSQL_PASSWORD: PASS
MYSQL_ROOT_PASSWORD: PASS
command:
- --max_connections=1000
restart: always
volumes:
- persistent:/var/lib/mysql
app:
image: app/appserver:latest
container_name: app_server
networks:
- somenetwork
ports:
- "8080:8080"
depends_on:
- mysqlserver
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysqlserver:5647/database?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true
networks:
somenetwork:
name:
somenetwork_share_net
volumes:
persistent:查看应用程序容器中的日志,我发现了如下错误:
由: com.mysql.cj.exceptions.CJCommunicationsException:通信链路故障引起的
最后一次成功发送到服务器的数据包是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。
和
java.base/java.net.PlainSocketImpl.socketConnect(Native方法中由: java.net.ConnectException:连接拒绝(连接拒绝)引起的
)
我的docker-compose.yml有什么问题吗?为什么应用程序容器不能连接
发布于 2021-10-29 10:16:57
您必须使用容器端3303上的公开端口,而不是公共5647。
只要试一试
SPRING_DATASOURCE_URL: jdbc:mysql://mysqlserver:3306/database?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true本地网络中的端口保持原来公开的端口。在端口部分,您只需定义主机上的公共端口。
https://stackoverflow.com/questions/69767161
复制相似问题