为什么我不能通过 CDM ["python","server.py"] 运行 python 脚本,但可以手动 运行

Why i can not run python script by CDM ["python","server.py"] but can run manually

我用 python 和 anaconda env 构建了一个 docker 容器,没有 docker 容器也能正常工作。 然后将该代码移动到容器中,我在启动该代码时遇到了问题,我遇到了问题,我的步骤:

  1. Docker 容器无法通过 CMD ["python","server.py"] 启动,它不起作用,因为找不到某些模块,但我确定我的 conda env完美(见第 3 步)
  2. 我将我的代码移到了 server1.py 而我的 server.py 只是 while True: pass
  3. 我通过“docker exec -it bash”进入容器,我看到 conda env 已激活
  4. I 运行 "python server1.py" 代码完美运行

为什么我的代码有问题?

我对 Docker 还不够熟悉,但它似乎没有激活您的 conda env。您可以尝试明确要求所需的 python 解释器。

要找到它,请进入您的容器并激活您的 conda env。 where python 然后应该给你解释器的完整路径。

在您的 docker CMD 中使用该路径,而不仅仅是 python

您的情况可能是因为docker构建时未能激活conda环境。尝试删除 docker 文件中的 CMD 部分,然后在执行 docker 运行 时,添加:

 /bin/bash -c "conda run --no-capture-output -n your_env_name your_CMD_to_start_server"

例如:

docker run --name ${CONTAINER_NAME} \
  --restart unless-stopped  -d  \
  -it roi_updater:latest \
  /bin/bash -c "conda run --no-capture-output -n server_env python /root/source/start_server.py"