python - 无法设置/覆盖 docker 入口点以执行两个命令
问题描述
我在启动 docker 映像时尝试设置/覆盖 docker 入口点,但出现意外行为
场景 1(不工作)
- Docker 运行命令--> docker run --rm -it --privileged --net=host python3.6 -m CameraServerBasler.pylon_video & python3.6 -m CameraServerBasler.server
- 输出--> /usr/bin/python3.6:查找“CameraServerBasler.server”的模块规范时出错(ModuleNotFoundError:没有名为“CameraServerBasler”的模块)
场景 2(工作)
如果我在 docker image bash 中执行相同的命令,一切都会按预期工作
- Docker 运行命令--> docker run --rm -it --privileged --net=host --entrypoint=/bin/bash
- 在 docker 镜像中执行的命令--> python3.6 -m CameraServerBasler.server & python3.6 -m CameraServerBasler.pylon_video
- 输出--> 两个服务器(模块)都按预期启动并运行(服务器和 pylon_video)
Docker 镜像 --> ubuntu:18.04
我在 docker run 命令中遗漏了什么吗?
解决方案
我已经能够使用 sh 脚本解决此问题,但仍然不太清楚为什么使用方法 #1 不起作用
方法 #1 不工作
在 docker 文件中声明的入口点
ENTRYPOINT ["python3.6", "-m", "CameraServerBasler.server", "&", "python3.6", "-m", "CameraServerBasler.pylon_video"]
方法#2 工作
在 docker 文件中声明的入口点
ENTRYPOINT ["sh", "init.sh"]
init.sh 文件内容
python3.6 -m CameraServerBasler.server & python3.6 -m CameraServerBasler.pylon_video
推荐阅读
- iframe - 服务工作者从 iframe 注释获取内部的任何调用 - CK 编辑器
- javascript - IOS在输入焦点上显示键盘
- nativescript - 如何在 NativeScript 5 中获取错误消息?
- excel - 循环浏览非活动工作表
- c# - 将对象添加到 httpclient put
- visual-studio-2017 - Visual Studio 2017 安装程序中哪里提供最新版本的 Windows 10 SDK?
- cassandra - Cassandra 集群列和性能
- python-sphinx - Sphinx 别名支持(替换?)
- java - 弹簧自动装配中的 ContextRefresher
- css - 使用 &.conditionalClass 更改 SCSS $var