当运行docker镜像时,在python中传递url作为参数



我想在运行docker映像时传递一个GCP存储URL作为参数,这样它就可以从我的存储中提取我的csv文件并打印数据集。

下面是我的档案

# 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镜像,并得到下面的错误

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()

我想在运行docker映像时传递类似的GCP buckethttps://storage.googleapis.com/MYBucket/app/Model/IrisClassifier.sav

您需要首先将所有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"]

那么你就可以通过你的CCD_ 3。

你的设置问题是:

docker将启动入口点,即python,用您的命令覆盖CMD,它将给您:

python YOUR_URL

更新

我不知道你是否添加if语句来运行主def,但这里是你如何编辑脚本的:

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

if __name__ == '__main__':
main()

最新更新