python - 运行 docker image 时在 python 中将 url 作为参数传递
问题描述
我想在运行我的 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 映像并出现以下错误
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 存储桶 https://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"]
然后你可以通过你的URL
.
您的设置问题是:
docker 将启动入口点,即python
使用您的命令覆盖 CMD,这将为您提供:
python YOUR_URL
更新
我不知道你是否添加了 if 语句来运行主 def,但在这里你应该如何编辑脚本:
def main():
print("Prior to entering arg")
parse_arguments()
if __name__ == '__main__':
main()
推荐阅读
- python - 如何更改 Seaborn Lineplot 函数中置信区间的填充图案(阴影线)
- python - 将 Collatz 周期运行到一百万,没有处理延迟
- reactjs - 如何将 React 应用程序置于维护模式
- windows-server-2012-r2 - HP Proliant windows server 2012 外部ip
- flutter - 连接到 mysqli 的问题 - 异常:SocketException
- html - 如何对齐我的卡的按钮在中心?
- python - 梯度下降可以近似奇异值分解(SVD)吗?
- git - 对分包商隐藏 git 存储库的内容
- bash - 睡眠:无效的时间间隔 '3\r' shell 脚本
- reactjs - 网格项导致白色间距和水平滚动条React js