如何配置在Docker容器中运行的Web应用程序以成功连接到在其他容器中运行的MongoDB数据库

问题描述 投票:1回答:2

问题摘要我有两个在Synology Diskstation 918+上的Docker中运行的容器。一个容器托管一个Web应用程序,另一个容器托管一个数据库。 Web应用程序无法连接到数据库。

Container1:这是Web应用程序容器

名称:glidinglogbook

内部版本:C#/。Net Core 2.1 / MongoDb.Driver 2.10.2 +前端的Angular 6 / Typescript / Bootstrap

外部端口:8003

Docker网络:glb-network

此容器的mongodb容器的别名是glbdb

Container2:这是MongoDB数据库服务器

名称:mongodb

要连接的数据库:glidinglogbook

外部端口:8005

Docker网络:glb-network

详细信息:glidinglogbook容器中的Web应用程序无法连接到MongoDB数据库。尝试连接30秒后,它通过以下堆栈跟踪超时:

al.ControllerActionInvoker.Rethrow(ActionExecutedContext context)                                                                                                                                           
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)                                                                        
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()                                                                                                                    
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()                                                                                                                          
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)                                                                                                            
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)                                                                                
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()                                                                                                                         
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()                                                                                                                                       
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)                                                                                                                         
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)                                                                                                                     
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)                                                                                                                     
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext context)                                                                                                               
fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]                                                                                                                                        
      An unhandled exception has occurred while executing the request.                                                                                                                                      
System.TimeoutException: A timeout occured after 30000ms selecting a server using CompositeServerSelector{ Selectors = MongoDB.Driver.MongoClient+AreSessionsSupportedServerSelector, LatencyLimitingServerS
elector{ AllowedLatencyRange = 00:00:00.0150000 } }. Client view of cluster state is { ClusterId : "1", ConnectionMode : "Automatic", Type : "Unknown", State : "Disconnected", Servers : [{ ServerId: "{ Cl
usterId : 1, EndPoint : "Unspecified/glbdb:8005" }", EndPoint: "Unspecified/glbdb:8005", State: "Disconnected", Type: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException: An exception 
occurred while opening a connection to the server. ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: Connection refused 172.17.0.2:8005                                             
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)                                                                                                                                        
   at System.Net.Sockets.Socket.<>c.<ConnectAsync>b__271_0(IAsyncResult iar)                                                                                                                                
--- End of stack trace from previous location where exception was thrown ---                                                                                                                                
   at MongoDB.Driver.Core.Connections.TcpStreamFactory.ConnectAsync(Socket socket, EndPoint endPoint, CancellationToken cancellationToken)                                                                  
   at MongoDB.Driver.Core.Connections.TcpStreamFactory.CreateStreamAsync(EndPoint endPoint, CancellationToken cancellationToken)                                                                            
   at MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancellationToken)                                                                                                 
   --- End of inner exception stack trace ---                                                                                                                                                               
   at MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancellationToken)                                                                                                 
   at MongoDB.Driver.Core.Servers.ServerMonitor.HeartbeatAsync(CancellationToken cancellationToken)", LastUpdateTimestamp: "2020-03-03T10:35:02.6718512Z" }] }.                                             
   at MongoDB.Driver.Core.Clusters.Cluster.ThrowTimeoutException(IServerSelector selector, ClusterDescription description)                                                                                  
   at MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChangedHelper.HandleCompletedTask(Task completedTask)                                                                                          
   at MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChanged(IServerSelector selector, ClusterDescription description, Task descriptionChangedTask, TimeSpan timeout, CancellationToken cancellation
Token) 
   at MongoDB.Driver.Core.Clusters.Cluster.SelectServer(IServerSelector selector, CancellationToken cancellationToken)                                                                                      
   at MongoDB.Driver.MongoClient.AreSessionsSupportedAfterServerSelection(CancellationToken cancellationToken)                                                                                              
   at MongoDB.Driver.MongoClient.AreSessionsSupported(CancellationToken cancellationToken)                                                                                                                  
   at MongoDB.Driver.OperationExecutor.StartImplicitSession(CancellationToken cancellationToken)                                                                                                            
   at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSession[TResult](Func`2 func, CancellationToken cancellationToken)                                                                                  
   at MongoDB.Driver.MongoCollectionImpl`1.FindSync[TProjection](FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)                                                     
   at MongoDB.Driver.FindFluent`2.ToCursor(CancellationToken cancellationToken)                                                                                                                             
   at MongoDB.Driver.IAsyncCursorSourceExtensions.ToList[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken)                                                                       
   at GlidingLogbook.Repositories.FlightRepository.GetAll() in C:\Users\Dave\source\repos\GlidingLogbook\Repositories\FlightRepository.cs:line 22                                                           
   at GlidingLogbook.Controllers.FlightsController.GetAll() in C:\Users\Dave\source\repos\GlidingLogbook\Controllers\FlightsController.cs:line 25                                                                                             

我的观察:

  1. 上面的堆栈跟踪包括:EndPoint : "Unspecified/glbdb:8005",这表明我在某种程度上错误地标识了数据库主机。谁能告诉我这里的“未指定”是什么?

  2. 除了下面的主机名需要为MyServer:8005之外,使用下面来自我的appsettings.json的凭据,使用Robo3T连接到MongDB数据库没有问题。

  3. 当我在Visual Studio 2019调试器中运行Web应用程序时,只要我将数据库服务器主机名更改为MyServer:8005,它就会成功连接到数据库并以常规方式执行CRUD操作。

  4. 我可以浏览到http://MyServer:8003以显示UI,但是在docker上下文中,Web应用程序无法连接到数据库,因此不会显示任何数据。

这是我的appsettings.json:

{
  "dbUsername": "[redacted]",
  "dbPassword": "[redacted]",
  "dbAuthMechanism": "SCRAM-SHA-1",
  "dbHost": "glbdb",
  "dbHostPort":  8005, 
  "dbName": "glidinglogbook",
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

这是我用来获取对数据库的引用的C#代码:

public class Database : IDatabase
{
    private readonly Settings settings;

    public Database(IOptionsMonitor<Settings> settings)
    {
        this.settings = settings.CurrentValue;
    }

    public IMongoDatabase Get()
    {
        var internalIdentity = new MongoInternalIdentity("admin", settings.DbUsername);
        var passwordEvidence = new PasswordEvidence(settings.DbPassword);
        var mongoCredential = new MongoCredential(settings.DbAuthMechanism, internalIdentity, passwordEvidence);
        var mongoClientSettings = new MongoClientSettings
        {
            Credential = mongoCredential, 
            Server = new MongoServerAddress(settings.DbHost, settings.DbHostPort)
        };

        var client = new MongoClient(mongoClientSettings);

        return client.GetDatabase(settings.DbName);
    }
}

在调查过程中,我还提出了以下建议:

docker network inspect glb-network
[
    {
        "Name": "glb-network",
        "Id": "beb299fbdbe1a230891427828a41e804040bd1e5403ecbb9bdff4abb86c47af5",
        "Created": "2020-03-02T16:38:49.893845611Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.21.0.0/16",
                    "Gateway": "172.21.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "9621d3b4971a585a632fb066bcd5b213a8e20f474729e6df20ef1e7ad3304b38": {
                "Name": "alpine1",
                "EndpointID": "c779c757b4847cd21fcb612e15a23a6d15a03ae4729a12d26a59cece14004e88",
                "MacAddress": "02:42:ac:15:00:04",
                "IPv4Address": "172.21.0.4/16",
                "IPv6Address": ""
            },
            "b491359c438df68fd247401ede1c9a999f74849f0fa78a4de898ea9c2a50b18a": {
                "Name": "glidinglogbook",
                "EndpointID": "e6a18ad3e811fddfab904f05a6f95bdd1f4323e727e71e5838d14a7a0e8eecc5",
                "MacAddress": "02:42:ac:15:00:03",
                "IPv4Address": "172.21.0.3/16",
                "IPv6Address": ""
            },
            "d9e756043c562fd4f8f2e57f114e56a0dd0256ecb72b50b47cf89f3e343fa643": {
                "Name": "mongodb",
                "EndpointID": "309b739d4a53a95e28e1e1713be100778619d2b74f6f7c6c2abef66dbbc253f0",
                "MacAddress": "02:42:ac:15:00:02",
                "IPv4Address": "172.21.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

和...

docker container inspect glidinglogbook
[
    {
        "Id": "b491359c438df68fd247401ede1c9a999f74849f0fa78a4de898ea9c2a50b18a",
        "Created": "2020-03-03T10:26:34.120702556Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "\"dotnet\" \"GlidingLogbook.dll\""
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 18767,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-03-03T10:32:24.412840804Z",
            "FinishedAt": "2020-03-03T10:32:05.106756231Z",
            "StartedTs": 1583231544,
            "FinishedTs": 1583231525
        },
        "Image": "sha256:e6f43665ec3bc215de8913af816f88372aee8e8ee88ea16bd0765861f4fe6311",
        "ResolvConfPath": "/volume1/@docker/containers/b491359c438df68fd247401ede1c9a999f74849f0fa78a4de898ea9c2a50b18a/resolv.conf",
        "HostnamePath": "/volume1/@docker/containers/b491359c438df68fd247401ede1c9a999f74849f0fa78a4de898ea9c2a50b18a/hostname",
        "HostsPath": "/volume1/@docker/containers/b491359c438df68fd247401ede1c9a999f74849f0fa78a4de898ea9c2a50b18a/hosts",
        "LogPath": "/volume1/@docker/containers/b491359c438df68fd247401ede1c9a999f74849f0fa78a4de898ea9c2a50b18a/log.db",
        "Name": "/glidinglogbook",
        "RestartCount": 0,
        "Driver": "btrfs",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "db",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {
                "64839/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8003"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": [
                "/mongodb:/glidinglogbook/glbdb"
            ],
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "DOTNET_SDK_VERSION=2.1.804",
                "ASPNETCORE_URLS=http://*:64839",
                "DOTNET_RUNNING_IN_CONTAINER=true",
                "DOTNET_USE_POLLING_FILE_WATCHER=true",
                "NUGET_XMLDOC_MODE=skip"
            ],
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 50,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": null,
            "Name": "btrfs"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "glidinglogbook",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "64839/tcp": {}
            },
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "DOTNET_SDK_VERSION=2.1.804",
                "ASPNETCORE_URLS=http://*:64839",
                "DOTNET_RUNNING_IN_CONTAINER=true",
                "DOTNET_USE_POLLING_FILE_WATCHER=true",
                "NUGET_XMLDOC_MODE=skip"
            ],
            "Cmd": null,
            "ArgsEscaped": true,
            "Image": "glidinglogbook:latest",
            "Volumes": null,
            "WorkingDir": "/app",
            "Entrypoint": [
                "/bin/sh",
                "-c",
                "\"dotnet\" \"GlidingLogbook.dll\""
            ],
            "OnBuild": null,
            "Labels": {},
            "DDSM": false
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "3bc8bdb7582c1994d052735054d64b170d90b9e9bf54de3ffbd9635cb828ff45",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "64839/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8003"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/3bc8bdb7582c",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "9297dc46163c799987c4cb57d5ee3ea8c3855bca3476ca503ecbd760eb5eb8b1",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "dad2d9a926d79fd266bcf1494a9ca5249666fd0280d799eb3b9589f9e7e7d750",
                    "EndpointID": "9297dc46163c799987c4cb57d5ee3ea8c3855bca3476ca503ecbd760eb5eb8b1",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                },
                "glb-network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "b491359c438d"
                    ],
                    "NetworkID": "beb299fbdbe1a230891427828a41e804040bd1e5403ecbb9bdff4abb86c47af5",
                    "EndpointID": "e6a18ad3e811fddfab904f05a6f95bdd1f4323e727e71e5838d14a7a0e8eecc5",
                    "Gateway": "172.21.0.1",
                    "IPAddress": "172.21.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:15:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]

...最后是...

docker container inspect mongodb
[
    {
        "Id": "d9e756043c562fd4f8f2e57f114e56a0dd0256ecb72b50b47cf89f3e343fa643",
        "Created": "2020-02-26T15:42:39.938818193Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mongod"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 17093,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-03-03T10:30:42.368424228Z",
            "FinishedAt": "2020-03-03T10:29:59.821302747Z",
            "StartedTs": 1583231442,
            "FinishedTs": 1583231399
        },
        "Image": "sha256:bcef5fd2979dbcbf76e46139680bf71c35925e344afa4703de43bdc44c6c526a",
        "ResolvConfPath": "/volume1/@docker/containers/d9e756043c562fd4f8f2e57f114e56a0dd0256ecb72b50b47cf89f3e343fa643/resolv.conf",
        "HostnamePath": "/volume1/@docker/containers/d9e756043c562fd4f8f2e57f114e56a0dd0256ecb72b50b47cf89f3e343fa643/hostname",
        "HostsPath": "/volume1/@docker/containers/d9e756043c562fd4f8f2e57f114e56a0dd0256ecb72b50b47cf89f3e343fa643/hosts",
        "LogPath": "/volume1/@docker/containers/d9e756043c562fd4f8f2e57f114e56a0dd0256ecb72b50b47cf89f3e343fa643/log.db",
        "Name": "/mongodb",
        "RestartCount": 0,
        "Driver": "btrfs",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/volume1/docker/mongodb:/data/db:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "db",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {
                "27017/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8005"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.11",
                "JSYAML_VERSION=3.13.0",
                "GPG_KEYS=E162F504A20CDF15827F718D4B7C549A058F8B6B",
                "MONGO_PACKAGE=mongodb-org",
                "MONGO_REPO=repo.mongodb.org",
                "MONGO_MAJOR=4.2",
                "MONGO_VERSION=4.2.3",
                "MONGO_INITDB_ROOT_PASSWORD=p*FW~t",
                "MONGO_INITDB_ROOT_USERNAME=mongodbuser"
            ],
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 50,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": null,
            "Name": "btrfs"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "e4a576d00714481bcb576441551dc24c569f9e6b6ed6b9b48d2742c4e2baddb5",
                "Source": "/volume1/@docker/volumes/e4a576d00714481bcb576441551dc24c569f9e6b6ed6b9b48d2742c4e2baddb5/_data",
                "Destination": "/data/configdb",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "bind",
                "Source": "/volume1/docker/mongodb",
                "Destination": "/data/db",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "mongodb",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "27017/tcp": {}
            },
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.11",
                "JSYAML_VERSION=3.13.0",
                "GPG_KEYS=E162F504A20CDF15827F718D4B7C549A058F8B6B",
                "MONGO_PACKAGE=mongodb-org",
                "MONGO_REPO=repo.mongodb.org",
                "MONGO_MAJOR=4.2",
                "MONGO_VERSION=4.2.3",
                "MONGO_INITDB_ROOT_PASSWORD=p*FW~t",
                "MONGO_INITDB_ROOT_USERNAME=mongodbuser"
            ],
            "Cmd": [
                "mongod"
            ],
            "ArgsEscaped": true,
            "Image": "mongo:latest",
            "Volumes": {
                "/data/configdb": {},
                "/data/db": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {},
            "DDSM": false
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "ca8ed91e9dabe029ef61412f4e0d385ddbfe5ca010fb7d4a933b441b5dcba5df",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "27017/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8005"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/ca8ed91e9dab",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "2d4ae043a660b10324570e621c3fdf13043d334c5a511c77252411a360b99539",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "dad2d9a926d79fd266bcf1494a9ca5249666fd0280d799eb3b9589f9e7e7d750",
                    "EndpointID": "2d4ae043a660b10324570e621c3fdf13043d334c5a511c77252411a360b99539",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                },
                "glb-network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "d9e756043c56"
                    ],
                    "NetworkID": "beb299fbdbe1a230891427828a41e804040bd1e5403ecbb9bdff4abb86c47af5",
                    "EndpointID": "309b739d4a53a95e28e1e1713be100778619d2b74f6f7c6c2abef66dbbc253f0",
                    "Gateway": "172.21.0.1",
                    "IPAddress": "172.21.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:15:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

作为Docker的新手,我对于为什么在容器中运行的Web应用程序无法连接到在另一个容器中运行的数据库的想法几乎一无所有。我上面关于堆栈跟踪的观察结果可能是一个线索,但是尽管我尝试了各种不同的选项,包括通过IP地址引用数据库,但仍然没有找到有效的配置。

任何解决此问题的帮助将不胜感激!

mongodb docker asp.net-core synology
2个回答
0
投票

您可以使用mongodb容器IP:172.20.1.2。如果希望使用名称而不是IP来访问容器,则可以使用Docker Compose配置容器。


0
投票

您是否检查过Web应用程序是否连接到数据库服务器所在的同一网络?https://docs.docker.com/engine/reference/commandline/network_connect/->这可能有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.