Сбой создания Azure Docker с разделом среды - PullRequest
0 голосов
/ 24 августа 2018

У меня есть сценарий docker-compose.yml , работающий в Azure. Но когда я добавляю раздел среды с двумя переменными, это приводит к ошибке:

2018-08-24 10:29:30.214 ERROR - Exception in multi-container config parsing: System.InvalidCastException: Specified cast is not valid.  
 at LWAS.Kube.ComposeFileParser.ParseContainer (System.Collections.Generic.KeyValuePair`2[TKey,TValue] service) [0x00152] in <029f376c1c6a4bb79892c2f60333c2d8>:0
 at LWAS.Kube.ComposeFileParser.ParseFile (System.String composeYaml) [0x000d2] in <029f376c1c6a4bb79892c2f60333c2d8>:0
 at LWAS.Kube.PodSpec.LoadSpecFromComposeYamlFile (System.String composeFile) [0x00000] in <029f376c1c6a4bb79892c2f60333c2d8>:0
 at LWAS.SiteStartInfoRepository.SetupPodSpecForMultiContainerApp (Microsoft.Web.Hosting.StartSiteContext ctx, LWAS.LinuxSiteStartInfo startInfo) [0x0000f] in <029f376c1c6a4bb79892c2f60333c2d8>:0
2018-08-24 10:29:30.215 ERROR - Start multi-container app failed

Сокращенное содержимое файла docker-compose.yml :

version: '3.3'

services:
  application:
    image: myregistry.azurecr.io/application:latest
    volumes:
      - application_data:/usr/local/application/data

  proxy:
    image: myregistry.azurecr.io/proxy:latest
    depends_on:
      - application
    environment:
      - NGINX_HOST=myapplication.azurewebsites.net
      - NGINX_PORT=80
    ports:
      - "80:80"

volumes:
  application_data:

Я пытался:

  1. чтобы иметь только одну переменную
  2. для использования кавычек вокруг значений, т.е. NGINX_PORT="80"
  3. иметь полное определение переменной в кавычках, т.е. "NGINX_PORT=80"
  4. чтобы переименовать переменные, используя регистр верблюдов, т.е. nginxPort=80
  5. для перемещения раздела среды вверх и вниз

Ничего не помогло - все то же сообщение об ошибке.

Но в Azure должна быть возможность использовать переменные окружения с Docker compose, как показано здесь: https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose

Примечание: работает локально, используя команду docker-compose без проблем. Так что это должна быть какая-то специфическая проблема Azure.

Что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

Попробуйте:
- Удаление дефисов перед environment значениями
- Изменение '=' на ':' для всех environment значений

version: '3.3'

services:
  application:
    image: myregistry.azurecr.io/application:latest
    volumes:
      - application_data:/usr/local/application/data

  proxy:
    image: myregistry.azurecr.io/proxy:latest
    depends_on:
      - application
    environment:
      NGINX_HOST: myapplication.azurewebsites.net
      NGINX_PORT: 80
    ports:
      - "80:80"

volumes:
  application_data:

Пример yml изMicrosoft:

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

Источник: https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-multi-container-app

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...