VirtualBox의 VM에 도커가 설치되어 있고 호스트 컴퓨터의 MySQL 데이터베이스에 연결하는 닷 Net Core 응용 프로그램으로 컨테이너를 실행하려고합니다. 그래서 나는 가상 박스에서 mysql과 내 애플리케이션 모두를위한 포워딩 포트를 설정했다. 호스트 컴퓨터에서 "http://localhost:3131/api/users/login"을 통해 내 서비스에 액세스 할 수 있지만 MySQL 데이터베이스에 연결할 수 없다는 오류가 발생합니다. 도커를 사용하지 않을 때 호스트 시스템에서 앱을 실행할 수도 있습니다. 인터넷에서 다른 스레드를 살펴 보았지만, 아래에 표시된 마지막 명령을 제외하고는 정확하게 깨달았지만 MySQL 인증이 구성 되었기 때문에 실행할 수 없습니다. 구성 파일이 아닌 응용 프로그램에 하드 코딩되어 있습니다.Docker 컨테이너가 호스트 컴퓨터의 MySQL에 액세스하지 않습니다
Program.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 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
버추얼 fowarding 포트 :
NAT 3131 -> 3000 tcp
NAT 3306 -> 3306 tcp
NAT 2415 -> 22
012을 다음과 같이 일반적인 구성은 3,516,
로컬 호스트 (나는 그것이 포트 3131를 나타납니다,하지만 어쨌든 서비스를 호출 생각했다.) 내가 추가해야하지만이 절차의 확실하지 않다 생각 Dockfile에서
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
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
그래서 (1) localhost를 입력하면 (3)에 액세스 할 수 있습니까? 3131 연결이 양방향으로 연결되지 않습니까? 그러면 (3)에서 (1)의 mysql에 액세스 할 수 있습니까? (빅터에게 인내심을 가져 주셔서 감사합니다) –