为什么我不能通过 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 容器也能正常工作。
然后将该代码移动到容器中,我在启动该代码时遇到了问题,我遇到了问题,我的步骤:
- Docker 容器无法通过 CMD ["python","server.py"] 启动,它不起作用,因为找不到某些模块,但我确定我的 conda env完美(见第 3 步)
- 我将我的代码移到了 server1.py 而我的 server.py 只是
while True: pass
- 我通过“docker exec -it bash”进入容器,我看到 conda env 已激活
- 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"
我用 python 和 anaconda env 构建了一个 docker 容器,没有 docker 容器也能正常工作。 然后将该代码移动到容器中,我在启动该代码时遇到了问题,我遇到了问题,我的步骤:
- Docker 容器无法通过 CMD ["python","server.py"] 启动,它不起作用,因为找不到某些模块,但我确定我的 conda env完美(见第 3 步)
- 我将我的代码移到了 server1.py 而我的 server.py 只是
while True: pass
- 我通过“docker exec -it bash”进入容器,我看到 conda env 已激活
- 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"