【发布时间】:2017-10-22 11:58:11
【问题描述】:
我在 VirtualBox 的虚拟机中安装了一个 docker,我正在尝试运行一个带有 dot Net Core 应用程序的容器,该应用程序连接到主机上的 MySQL 数据库。所以我已经在 Virtual Box 上为 mysql 和我的应用程序配置了转发端口。我可以通过主机中的“http://localhost:3131/api/users/login”访问我的服务,但它会抛出一个错误,提示无法连接 MySQL 数据库。当我不使用 docker 时,我还可以在主机中运行该应用程序。我查看了互联网上的其他线程,但除了下面显示的最后一个命令外,没有什么能启发我,但我无法运行,因为 MySQL 身份验证的配置是在应用程序中硬编码的,而不是使用配置文件。大体配置如下:
程序.cs
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseApplicationInsights()
.UseUrls("http://*:80")
.Build();
Dockerfile
FROM microsoft/aspnetcore
WORKDIR /app
COPY bin/Release/PublishOutput/ .
EXPOSE 80
ENTRYPOINT ["dotnet", "UsersApi.dll"]
Docker 运行命令
docker run -d -p 3000:80 user_api
// and also tried
docker run -d -p 3000:80 user_api --net=host
// and also tried
docker run -d -p 3000:80 user_api --add-host localhost:127.0.0.1
VirtualBox 转发端口:
NAT 3131 -> 3000 tcp
NAT 3306 -> 3306 tcp
NAT 2415 -> 22
localhost(我以为它会出现端口 3131,但它还是调用了服务。)
Starting Nmap 7.40 ( https://nmap.org ) at 2017-05-22 11:23 E. South America Standard Time
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0013s latency).
Other addresses for localhost (not scanned): ::1
rDNS record for 127.0.0.1: rinaldipc.com
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
135/tcp open msrpc
445/tcp open microsoft-ds
2179/tcp open vmrdp
3306/tcp open mysql
5357/tcp open wsdapi
我认为需要添加的 Dockfile 中的 RUN 命令,但我不确定程序。
RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
https://stackoverflow.com/questions/33827342/how-to-connect-mysql-workbench-to-running-mysql-inside-docker/33827463#33827463
【问题讨论】:
标签: mysql docker asp.net-core virtualbox host