python - Micromamba 和 Dockerfile 错误 :/bin/bash: activate: No such file or directory

标签 python docker flask dockerfile conda

曾经有一个带有 condaflask 的 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/

相关文章:

python - PIL - 使用 Alpha 将图像粘贴到另一个图像上

python - 在 tensorflow 中,如何在 y 上使用 tf.where() 从 x 中选择行,其中 x 和 y 具有不同的形状?

python - 用补丁模拟两个函数以进行单元测试

docker - 命令在 docker 容器内工作,但在 docker exec 下失败

docker - Docker Container运行周期过程以填充数据库

python - 为什么我的Python脚本不能使用Docker运行?

python - flask-Python 中的多重路由

python - 如何发起SIP( session 发起协议(protocol))并通过RTP(实时传输协议(protocol))传输媒体(语音)

amazon-web-services - Flask-Session Redis 连接到 AWS 上的错误主机?

python - 在 Flask 中,如何在单击按钮时生成动态 URL?