gpt4 book ai didi

mysql - 在 docker 中使用 MySQL 数据库设置 aspnetcore

转载 作者:行者123 更新时间:2023-11-29 01:35:51 29 4
gpt4 key购买 nike

我正在尝试为 asp.net-core、mysql 数据库和 phpmyadmin 设置一个带有容器的 docker-compose 文件。设置我的 mysql-server 没有问题,我可以使用 phpmyadmin 访问它。此外,我的 asp.net-core 应用程序运行正常,我可以在浏览器中访问它。

但是,我无法与我的 MySQL 数据库建立连接。应用程序不断返回:

Unable to connect to any of the specified MySQL hosts

应用程序正在通过 appsettings.json 中的连接字符串进行连接。

{
"ConnectionStrings": {
"FlowerAPIConnection": "server=localhost;userid=user;password=user;database=bloemenapi_db;Convert Zero Datetime=True"
},
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}
}

我的猜测是,在 docker 容器中,正在运行的应用程序和 mysql 似乎无法在本地主机上找到彼此。我尝试在连接字符串中使用 mysql 容器的 ip 地址,但这也没有用。

我正在使用以下 docker-compose.yml 和 Dockerfile。

version: '3'

services:
db:
image: mysql
restart: always
container_name: flowerapi-db
environment:
- MYSQL_USER=root
- MYSQL_PASSWORD=user
- MYSQL_ROOT_PASSWORD=user
- MYSQL_DATABASE=bloemenapi_db
ports:
- "3306"

phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: flowerapi-pma
ports:
- "81:80"
external_links:
- db:mysql
environment:
PMA_HOST: "db"
PMA_PORT: 3306
web:
image: flowerapi
container_name: flowerapi-web
build:
context: ./FlowerAPI
dockerfile: Dockerfile
ports:
- "5000:80"
links:
- db
depends_on:
- db

docker 文件

FROM microsoft/aspnetcore:2.0
LABEL name "flower-api"
ARG source
WORKDIR /app
EXPOSE 5000/tcp
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "FlowerAPI.dll"]

感谢您的帮助。

最佳答案

默认情况下,容器不允许任何人从容器外部以 root 身份登录服务器。这可以防止其他容器(或主机)连接到数据库(使用根凭据)。您可以使用标志 MYSQL_ROOT_HOST 来传递容器或主机的 IP,它应该被允许使用 root 凭据连接到服务器。例如。要允许主机连接,您可以设置 MYSQL_ROOT_HOST="172.17.0.1"。

我还看到您只创建了 root 用户,但在连接字符串中您使用了 userid=user。您可以使用 server=127.0.0.1 作为主机名。

关于mysql - 在 docker 中使用 MySQL 数据库设置 aspnetcore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46170736/

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