Передача URL в качестве аргументов в Python при запуске образа докера - PullRequest
1 голос
/ 04 ноября 2019

Я хочу передать URL хранилища GCP в качестве аргумента при запуске моего образа докера, чтобы он мог вытащить мой CSV-файл из моего хранилища и распечатать набор данных.

Ниже приведен мой файл Docker

# Use the official lightweight Python image.
# https://hub.docker.com/_/python
FROM continuumio/miniconda3


# Copy local code to the container image.
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

# Install production dependencies.
RUN pip install Flask gunicorn
RUN pip install scikit-learn==0.20.2 firefly-python==0.1.15
RUN pip install --upgrade google-cloud-storage
ENTRYPOINT ["python"]
CMD ["pre.py"]

Я попытался запустить образ докера по приведенной ниже команде и получить ошибку ниже

docker run preprocess:v1 "https://storage.googleapis.com/MYBucket/app/Model/IrisClassifier.sav"

.

python: can't open file 'https://storage.googleapis.com/MYBucket/app/Model/IrisClassifier.sav': [Errno 2] No such file or directory
import os
import argparse
from google.cloud import storage
from sklearn.externals import joblib
from urllib.request import urlopen

def parse_arguments():
    print('entered parse arg')
    parser = argparse.ArgumentParser()
    parser.add_argument('data_dir', type=str, help='GCSpath')
    args = parser.parse_known_args()[0]
    print('Argument passed')
    print(os.getcwd())
    print('STARTING CLOUD RETRIVAL')
    print('*****client initialized')
    dataset_load = joblib.load(urlopen(args.dat_dir))
    print('*****loaded Dataset')
    print(dataset_load)


def main(_):
    print("Prior to entering arg")
    parse_arguments()

Я хочу передать аналогичное ведро GCP при запуске моегоизображение докера https://storage.googleapis.com/MYBucket/app/Model/IrisClassifier.sav

1 Ответ

0 голосов
/ 04 ноября 2019

сначала вам нужно изменить все свои CMD на ENTRYPOINT:

FROM continuumio/miniconda3

ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

RUN pip install Flask gunicorn
RUN pip install scikit-learn==0.20.2 firefly-python==0.1.15
RUN pip install --upgrade google-cloud-storage
ENTRYPOINT ["python", "pre.py"]

, затем вы можете передать URL.

Проблема с вашей настройкой:

docker запустит точку входа, то есть python, и с помощью вашей команды вы перезапишите CMD, который даст вам:

python YOUR_URL

Обновление

Я не знаю, если вы добавите оператор if для запуска основного определения, но вот как вы должны отредактировать скрипт:

def main():
    print("Prior to entering arg")
    parse_arguments()


if __name__ == '__main__':
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...