通过 Docker 从 .NET 应用程序连接到 Azurite
Connect to Azurite from .NET App via Docker
我有一个 .NET 6 API(Docker 中的运行)和 Azurite(Docker 中的运行)。
我正在尝试使用 .NET SDK 从 .NET 应用程序连接到 Azurite,但在 Docker 日志中收到以下错误:
System.AggregateException: Retry failed after 6 tries. Retry settings
can be adjusted in ClientOptions.Retry. (Connection refused
(azurite:10000)) (Connection refused (azurite:10000)) (Connection
refused (azurite:10000)) (Connection refused (azurite:10000))
(Connection refused (azurite:10000)) (Connection refused
(azurite:10000))
第二行快死了 (CreateIfNotExists()
):
_blobContainerClient = new BlobContainerClient(connectionString, containerName);
_blobContainerClient.CreateIfNotExists();
这是我的 .NET 应用程序中的连接字符串:
"Azure": {
"StorageConnectionString": "UseDevelopmentStorage=true"
}
这是我的 docker-compose.yml
文件:
version: '3.4'
services:
api:
image: ${DOCKER_REGISTRY-}api
container_name: aft-backend-api
build:
context: src
dockerfile: API/Dockerfile
networks:
- aft-backend
environment:
- ASPNETCORE_URLS=http://+:5000
- Azure__StorageConnectionString=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://azurite;
depends_on:
- azurite
azurite:
image: mcr.microsoft.com/azure-storage/azurite
container_name: aft-backend-azurite
hostname: azurite
restart: always
command: 'azurite --blobHost 127.0.0.1 --blobPort 10000 --queueHost 127.0.0.1 --queuePort 10001'
ports:
- 10000:10000
- 10001:10001
networks:
- aft-backend
networks:
aft-backend:
name: aft-backend-network
注意事项:
- 我正在使用
environment
变量 覆盖撰写文件中的连接字符串
- 我已将
DevelopmentStorageProxyUri
设置为主机名 (azurite)
- 我正在使用
depends_on
来确保 Azurite 在 API 之前启动
我注意到这个 ,但是它似乎已经过时并且没有明确的答案。
有人能帮忙吗?
提前致谢。
我也很难过。归根结底,我是这样工作的:
docker-compose.yaml
version: "3.9"
services:
azurite:
image: mcr.microsoft.com/azure-storage/azurite
command: "azurite --loose --blobHost 0.0.0.0 --blobPort 10000 --queueHost 0.0.0.0 --queuePort 10001 --location /workspace --debug /workspace/debug.log"
ports:
- 10010:10000
- 10011:10001
- 10012:10002
volumes:
- ./azurite:/workspace
backend:
build:
context: backend
args:
AzureWebJobsStorage: "${AzureWebJobsStorage}"
ports:
- 10004:80
depends_on:
- azurite
应用中使用的连接字符串:DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://host.docker.internal:10010/devstoreaccount1;QueueEndpoint=http://host.docker.internal:10011/devstoreaccount1;
我正在使用 env 文件传递连接字符串,但它在您的 local.settings.json
文件中应该也能正常工作。
在@peinearydevelopment 的回答的帮助下得到它的工作。
我必须将 docker-compose
文件更改为:
version: '3.4'
services:
api:
image: ${DOCKER_REGISTRY-}api
container_name: aft-backend-api
build:
context: src
dockerfile: API/Dockerfile
networks:
- aft-backend
environment:
- ASPNETCORE_URLS=http://+:5000
- Azure__StorageConnectionString=DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://host.docker.internal:10000/devstoreaccount1;QueueEndpoint=http://host.docker.internal:10001/devstoreaccount1;
depends_on:
- azurite
azurite:
image: mcr.microsoft.com/azure-storage/azurite
container_name: aft-backend-azurite
hostname: azurite
restart: always
command: 'azurite --loose --blobHost 0.0.0.0 --blobPort 10000 --queueHost 0.0.0.0 --queuePort 10001 --location /workspace --debug /workspace/debug.log'
ports:
- 10000:10000
- 10001:10001
volumes:
- ./azurite:/workspace
networks:
- aft-backend
networks:
aft-backend:
name: aft-backend-network
主要是使用正确的 Azure 连接字符串,并确保端口与 azurite 命令中设置的匹配。
我有一个 .NET 6 API(Docker 中的运行)和 Azurite(Docker 中的运行)。
我正在尝试使用 .NET SDK 从 .NET 应用程序连接到 Azurite,但在 Docker 日志中收到以下错误:
System.AggregateException: Retry failed after 6 tries. Retry settings can be adjusted in ClientOptions.Retry. (Connection refused (azurite:10000)) (Connection refused (azurite:10000)) (Connection refused (azurite:10000)) (Connection refused (azurite:10000)) (Connection refused (azurite:10000)) (Connection refused (azurite:10000))
第二行快死了 (CreateIfNotExists()
):
_blobContainerClient = new BlobContainerClient(connectionString, containerName);
_blobContainerClient.CreateIfNotExists();
这是我的 .NET 应用程序中的连接字符串:
"Azure": {
"StorageConnectionString": "UseDevelopmentStorage=true"
}
这是我的 docker-compose.yml
文件:
version: '3.4'
services:
api:
image: ${DOCKER_REGISTRY-}api
container_name: aft-backend-api
build:
context: src
dockerfile: API/Dockerfile
networks:
- aft-backend
environment:
- ASPNETCORE_URLS=http://+:5000
- Azure__StorageConnectionString=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://azurite;
depends_on:
- azurite
azurite:
image: mcr.microsoft.com/azure-storage/azurite
container_name: aft-backend-azurite
hostname: azurite
restart: always
command: 'azurite --blobHost 127.0.0.1 --blobPort 10000 --queueHost 127.0.0.1 --queuePort 10001'
ports:
- 10000:10000
- 10001:10001
networks:
- aft-backend
networks:
aft-backend:
name: aft-backend-network
注意事项:
- 我正在使用
environment
变量 覆盖撰写文件中的连接字符串
- 我已将
DevelopmentStorageProxyUri
设置为主机名 (azurite) - 我正在使用
depends_on
来确保 Azurite 在 API 之前启动
我注意到这个
有人能帮忙吗?
提前致谢。
我也很难过。归根结底,我是这样工作的:
docker-compose.yaml
version: "3.9"
services:
azurite:
image: mcr.microsoft.com/azure-storage/azurite
command: "azurite --loose --blobHost 0.0.0.0 --blobPort 10000 --queueHost 0.0.0.0 --queuePort 10001 --location /workspace --debug /workspace/debug.log"
ports:
- 10010:10000
- 10011:10001
- 10012:10002
volumes:
- ./azurite:/workspace
backend:
build:
context: backend
args:
AzureWebJobsStorage: "${AzureWebJobsStorage}"
ports:
- 10004:80
depends_on:
- azurite
应用中使用的连接字符串:DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://host.docker.internal:10010/devstoreaccount1;QueueEndpoint=http://host.docker.internal:10011/devstoreaccount1;
我正在使用 env 文件传递连接字符串,但它在您的 local.settings.json
文件中应该也能正常工作。
在@peinearydevelopment 的回答的帮助下得到它的工作。
我必须将 docker-compose
文件更改为:
version: '3.4'
services:
api:
image: ${DOCKER_REGISTRY-}api
container_name: aft-backend-api
build:
context: src
dockerfile: API/Dockerfile
networks:
- aft-backend
environment:
- ASPNETCORE_URLS=http://+:5000
- Azure__StorageConnectionString=DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://host.docker.internal:10000/devstoreaccount1;QueueEndpoint=http://host.docker.internal:10001/devstoreaccount1;
depends_on:
- azurite
azurite:
image: mcr.microsoft.com/azure-storage/azurite
container_name: aft-backend-azurite
hostname: azurite
restart: always
command: 'azurite --loose --blobHost 0.0.0.0 --blobPort 10000 --queueHost 0.0.0.0 --queuePort 10001 --location /workspace --debug /workspace/debug.log'
ports:
- 10000:10000
- 10001:10001
volumes:
- ./azurite:/workspace
networks:
- aft-backend
networks:
aft-backend:
name: aft-backend-network
主要是使用正确的 Azure 连接字符串,并确保端口与 azurite 命令中设置的匹配。