在Docker Desktop中运行我的Docker Desktop项目后,我得到了下面的错误。它创建了我所有的Images,但是它似乎无法连接到MySQL实例:
MySqlException: Unable to connect to any of the specified MySQL hosts.
MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, int startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in ServerSession.cs, line 413我已经完成了docker-compose文件如下。(这个文件包含一些我决定不删除的其他服务,因为我猜到这个问题可能源于这些服务):
version: "3"
volumes:
datafiles:
services:
database:
image: mysql:8.0.28
ports:
- "3307:3306"
volumes:
- datafiles:/var/lib/mysql
- "~/sql-scripts/setup.sql:/docker-entrypoint-initdb.d/1.sql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: ******
MYSQL_USER: sa
MYSQL_PASSWORD: ******
MYSQL_DATABASE: Pand
networks:
- hub_network
chrome:
image: selenium/node-chrome:4.3.0-20220706
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
networks:
- hub_network
selenium-hub:
image: selenium/hub:4.3.0-20220706
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
networks:
- hub_network
web:
build: .
ports:
- "8090:80"
depends_on:
- database
- selenium-hub
- chrome
restart: always
networks:
- hub_network
#Specify Environment Variables for the Api Service
environment:
- DBHOST=database
- ASPNETCORE_ENVIRONMENT=Development
networks:
hub_network:
external: false而且,共享我的appsettings.Development.json也很有用。
{
"ConnectionStrings": {
"MYSQL_PASSWORD": "******",
"MYSQL_USER": "sa",
"MYSQL_DATABASE": "Pand"
}
}下面是我创建Context的一段代码
public void ConfigureServices(IServiceCollection services)
{
var host = "database";
var port = "3307";
var password = Configuration["MYSQL_PASSWORD"] ?? Configuration.GetConnectionString("MYSQL_PASSWORD");
var userid = Configuration["MYSQL_USER"] ?? Configuration.GetConnectionString("MYSQL_USER");
var usersDataBase = Configuration["MYSQL_DATABASE"] ?? Configuration.GetConnectionString("MYSQL_DATABASE");
var connectionString = $"server={host}; userid={userid};pwd={password};port={port};database={usersDataBase}";
services.AddDbContext<EFDbContext>(
options => options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString))
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking), ServiceLifetime.Transient);
}如果需要任何其他代码片段,请让我分享。
发布于 2022-07-25 03:06:32
您试过使用mysql客户端从主机连接mysql吗?那有用吗?您已经将主机定义为“数据库”,尝试使用mysql客户端连接主机并发布结果。
https://stackoverflow.com/questions/73087932
复制相似问题