gpt4 book ai didi

python - 如何为Docker设置动态值

转载 作者:行者123 更新时间:2023-12-02 19:18:43 25 4
gpt4 key购买 nike

我有一个问题,一旦构建图像,如何动态更改docker中的某些值。

所以基本上我有这个Dockerfile如下。

FROM python:3.7.7

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY server.py /usr/src/app
COPY . /usr/src/app

EXPOSE 8083

# CMD ["python3", "-m", "http.server", "8080"]
CMD ["python3", "./server.py"]

因此,当前服务器正在按预期工作。但是 server.py中有一个动态更改的变量。生成图像后,便无法更改该变量,因为现在已经构建了图像,并且该变量始终引用相同的值。

请参见下面的 server.py:
from flask import Flask
app = Flask(__name__)
import linearregression

PORT = 8083

file_path = "./prices.csv" # variable I need to change


predicted_values = linearregression.runModel(file_path)

@app.route('/')
def hello_world():

return "Predicted Values - " + str(predicted_values)

@app.route('/banuka')
def hi():
return "Hi Jananath"

if __name__ == '__main__':
app.run(host='0.0.0.0', port=PORT)

如上所述,我有另一个名为 pythonlinearregression.py文件,该文件具有 runModel(file_path)方法,该方法接受 String格式的参数并返回一些值。

每当我上传其他文件或更改同一文件中的内容时,都必须更改此路径。但由于 图像已构建,因此我无法执行此操作。 我该怎么做?

最佳答案

您应该尝试在Dockerfile中使用ENV定义一个变量,并使用'-e'选项启动容器:

FROM python:3.7.7
...
ENV FILE_PATH=prices.csv
...
CMD ["python3", "./server.py"]

并在python代码中:
import os
from flask import Flask
app = Flask(__name__)
import linearregression

PORT = 8083

file_path = os.environ['FILE_PATH'])
....

并运行为:
docker run -e FILE_PATH=/path/to/prices.csv ...

关于python - 如何为Docker设置动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61570748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com