gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:51:24 25 4
gpt4 key购买 nike

问题摘要
我有两个在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

我的观察:
  • 上面的堆栈跟踪包括:EndPoint : "Unspecified/glbdb:8005",它表明我以某种方式错误地标识了数据库主机。谁能告诉我这里的“未指定”是什么?
  • 除了下面的主机名需要为MyServer:8005之外,我使用下面的appsettings.json中的凭据通过Robo3T连接到MongDB数据库没有问题。
  • 当我在Visual Studio 2019调试器中运行Web应用程序时,只要我将数据库服务器主机名更改为MyServer:8005,它就会成功连接到数据库并以常规方式执行CRUD操作。
  • 我可以浏览到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容器IP:172.20.1.2。
    如果您希望使用名称而不是IP来访问容器,则可以使用Docker Compose来配置容器。

    关于mongodb - 如何配置在Docker容器中运行的Web应用程序以成功连接到在其他容器中运行的MongoDB数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60506410/

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