Невозможно запустить Docker-контейнер из .NET-клиента, передав переменную среды - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь запустить контейнер с помощью API Docker.NET Я создал контейнер и для этого контейнера я пытаюсь передать переменную среды. Я не получаю ожидаемый вывод, но контейнер работает отлично в оболочке докера, и ожидаемый вывод в порядке. Я пытался без переменной окружения в Docker.NET, он работает нормально. Не уверен, как передать переменную из в контейнер с помощью DOCKER.NET. Что-то, что я делаю совершенно неправильно. Фактический код состоит в том, чтобы отфильтровать хранилище таблиц Azure на основе ключа раздела и загрузить его.

        DockerClient client = new DockerClientConfiguration(new Uri(strUrl)).CreateClient();
        IList<string> partitionKeys = new List<string> { "NA","SA","APAC","AFR","EUR","CHN" };

        foreach (var item in partitionKeys)
        {
            var cntrParameters = new CreateContainerParameters(new Config
            {
                Image = "xxxx/xxxx:2",
                Env = new List<string> { string.Format("PARTITION_KEY = '{0}'", item) },
                //Env = new List<string> { "PARTITION_KEY = 'NA'" },
            });
            var createCntrParametersResponse = await client.Containers.CreateContainerAsync(cntrParameters);
            var ContainerId = createCntrParametersResponse.ID;
            var strtCntrParameters = new ContainerStartParameters();
            var strtCntrParametersResponse = await client.Containers.StartContainerAsync(ContainerId, strtCntrParameters);
        }

Файл Docker

        FROM python:3.6

        ADD azureconnect.py 

        RUN pip install numpy
        RUN pip install pandas
        RUN pip install pymssql
        RUN pip install matplotlib
        RUN pip install random2
        RUN pip install azure-cosmosdb-table

        CMD [ "python", "./azureconnect.py" ]

Команда Docker Shell

        docker run -e PARTITION_KEY='NA' -t pepsicoflna/azureconnect:2

Код Python

        from azure.cosmosdb.table.tableservice import TableService
        from azure.cosmosdb.table.models import Entity
        import numpy as np
        import os 
        import random


        table_service = TableService(account_name="*******",account_key="******;EndpointSuffix=core.windows.net")
        partitionkey = os.environ['PARTITION_KEY']
        #partitionkey = 'NORTH_AMERICA'
        task001 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(0, 1000)), 'description' : 'step1', 'priority' : 400}
        task002 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(1000, 2000)), 'description' : 'step2', 'priority' : 100}
        task003 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(2000, 3000)), 'description' : 'step3', 'priority' : 400}
        task004 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(3000, 4000)), 'description' : 'step4', 'priority' : 100}
        task005 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(4000, 5000)), 'description' : 'step5', 'priority' : 100}
        task006 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(5000, 6000)), 'description' : 'step6', 'priority' : 400}
        task007 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(6000, 7000)), 'description' : 'step7', 'priority' : 100}
        task008 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(7000, 8000)), 'description' : 'step8', 'priority' : 400}
        task009 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(8000, 9000)), 'description' : 'step9', 'priority' : 100}
        task0010 = {'PartitionKey': partitionkey, 'RowKey': str(random.randint(9000, 10000)), 'description' : 'step10', 'priority' : 100}

        table_service.insert_entity('dockerlogger',task001)
        table_service.insert_entity('dockerlogger',task002)
        table_service.insert_entity('dockerlogger',task003)
        table_service.insert_entity('dockerlogger',task004)
        table_service.insert_entity('dockerlogger',task005)
        table_service.insert_entity('dockerlogger',task006)
        table_service.insert_entity('dockerlogger',task007)
        table_service.insert_entity('dockerlogger',task008)
        table_service.insert_entity('dockerlogger',task009)
        table_service.insert_entity('dockerlogger',task0010)

Журнал докера ContainerID

    Traceback (most recent call last):
      File "./azureconnect.py", line 9, in <module>
        partitionkey = os.environ['PARTITION_KEY']
      File "/usr/local/lib/python3.6/os.py", line 669, in __getitem__
        raise KeyError(key) from None
    KeyError: 'PARTITION_KEY'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...