运行docker映像时在python中将url作为参数传递

运行docker映像时在python中将url作为参数传递,python,docker,dockerfile,command-line-arguments,Python,Docker,Dockerfile,Command Line Arguments,我想在运行docker映像时传递一个GCP存储URL作为参数,以便它可以从我的存储中提取csv文件并打印数据集 下面是我的dockerfile # 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 $

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

下面是我的dockerfile

# 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镜像,通过below命令,得到below错误

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

我想在运行docker映像时传递一个类似的GCP桶

首先,您需要将所有
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,但在这里您可以如何编辑脚本:

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


if __name__ == '__main__':
    main()

首先,您需要将所有
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,但在这里您可以如何编辑脚本:

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


if __name__ == '__main__':
    main()

我不明白,你能解释一下吗,因为我是docker的新手,docker运行预处理:v1你的URL将覆盖你图像中的CMD,因此你最终会得到python你的URL,而没有
pre.py
,并且你所犯的错误是你编辑了dockerfile,正如你所说的:ENTRYPOINT[“python”,“pre.py”]但是现在当我运行docker映像docker run-d preprocess:v5时没有输出,正如您在我的python代码中看到的,甚至我用于日志的print语句也没有打印这是另一个问题,请参见:正如您所说,我已经给出了ENTRYPOINT[“python”,“-u”,“pre.py”],但仍然无法输出。。我还可以看到日志,因为容器被堵住了我无法理解,你能解释一下吗,因为我是docker的新手,docker运行预处理:v1你的URL将覆盖你图像中的
CMD
,因此你的URL将以
python结尾,而没有
pre.py
,你所犯的错误是关于你编辑docker文件的:ENTRYPOINT[“python”,“pre.py”]但是现在当我运行docker映像docker run-d preprocess:v5时没有输出,正如您在我的python代码中看到的,甚至我用于日志的print语句也没有打印这是另一个问题,请参见:正如您所说,我已经给出了ENTRYPOINT[“python”、“-u”、“pre.py”],但仍然无法输出。。当容器停止时,我还可以看到日志