Как совместно использовать диски с контейнерами Docker Linux в веб-приложениях Azure для контейнеров? - PullRequest
1 голос
/ 22 мая 2019

Я развертываю контейнер Linux на веб-приложениях Azure для контейнеров и получаю при этом ошибки:

2019-05-22T18:33:20.506771506Z       Unable to start Kestrel.
2019-05-22T18:33:20.506777506Z Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file
2019-05-22T18:33:20.520011951Z    at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle)
2019-05-22T18:33:20.520078751Z    at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
2019-05-22T18:33:20.536820007Z    at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
2019-05-22T18:33:20.536851707Z    at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
2019-05-22T18:33:20.536857407Z    at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LoadCertificate(CertificateConfig certInfo, String endpointName)
2019-05-22T18:33:20.536862107Z    at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LoadDefaultCert(ConfigurationReader configReader)
2019-05-22T18:33:20.536866907Z    at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Load()
2019-05-22T18:33:20.536871307Z    at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.ValidateOptions()
2019-05-22T18:33:20.536884408Z    at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)

docker-compose.yml

version: '3.4'

services:
  myservice:
    image: myimage:latest-tag
    ports:
      - "5555"
    environment:
      - ASPNETCORE_URLS=https://+:443
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/etc/ssl/certs/certificate.pfx
      - ASPNETCORE_Kestrel__Certificates__Default__Password=mypassword
    volumes:
      - C:\path\to\certs:/etc/ssl/certs

networks:
  default:
    external:
      name: nat

Я создал новый экземпляр Web App for Containers, настроил его, используя указанный выше файл docker-compose.yml, и получил указанную выше ошибку.Я видел эту ошибку раньше, когда пытался docker run приложение в моей среде разработки.Это связано с тем, что Docker пытается получить доступ к общему диску на моем компьютере.Docker Desktop предложит мне спросить, хочу ли я поделиться этим диском и ввести учетные данные для входа.

Однако я не знаю, как это сделать в Azure.Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 23 мая 2019

Похоже, что это внешнее хранилище C: \ path \ to \ certs, и это путь внутри контейнера - / etc / ssl / certs.Тем не менее, C: \ path \ to \ certs не существует на нашем рабочем месте, поскольку это Linux Machine, а C: \ не завершается.Поэтому, если вы хотите отобразить постоянное хранилище, которое мы предоставляем, мы должны использовать $ {WEBAPP_STORAGE_HOME}.См. - https://docs.microsoft.com/en-us/azure/app-service/containers/configure-custom-container#use-persistent-storage-in-docker-compose

...