曾经有一个带有 conda
和 flask
的 Dockerfile,可以在本地工作,但在安装 pytorch
后必须切换到 micromamba
code>,旧的 CMD
在切换到镜像 mambaorg/micromamba:1-focal-cuda-11.7.1
后不再工作,这就是我的 Dockerfile 现在的样子:
FROM mambaorg/micromamba:1-focal-cuda-11.7.1
WORKDIR /app
COPY environment.yml .
RUN micromamba env create --file environment.yml
EXPOSE 5001
COPY app.py .
CMD ["/bin/bash", "-c", "source activate env-app && flask run --host=0.0.0.0 --port=5001"]
现在我收到错误:
/bin/bash:激活:没有这样的文件或目录
但在我使用 conda
之前它可以工作,我认为 CMD 命令需要更新。
最佳答案
假设这两个文件:
环境.yml
name: testenv
channels:
- conda-forge
dependencies:
- python >= 3.9
- flask
app.py
from flask import Flask
# Create a Flask application
app = Flask(__name__)
# Define a route for the root URL
@app.route("/")
def hello_world():
return "Hello, World!"
if __name__ == "__main__":
# Run the Flask app on the local development server
app.run()
然后在您的 Dockerfile 中,您不会激活环境,而是使用环境路径,例如/opt/conda/envs/testenv/bin/flask
(注意路径和 environment.yaml
中的 testenv
):
Dockerfile
FROM mambaorg/micromamba:1-focal-cuda-11.7.1
WORKDIR /app
COPY environment.yml .
RUN micromamba env create --file environment.yml
EXPOSE 5001
COPY app.py .
CMD micromamba run -n testenv flask run --host=0.0.0.0 --port=5001
构建:
docker build . -f Dockerfile -t my/image:name
运行:
docker run --rm -i -t -p 5001:5001 my/image:name
然后将浏览器导航到localhost:5001
,您应该会看到Hello World
。
关于python - Micromamba 和 Dockerfile 错误 :/bin/bash: activate: No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77354058/