Я пытаюсь запустить контейнер с помощью 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'