首页 > 解决方案 > 无法设置/覆盖 docker 入口点以执行两个命令

问题描述

我在启动 docker 映像时尝试设置/覆盖 docker 入口点,但出现意外行为

场景 1(不工作)

  1. Docker 运行命令--> docker run --rm -it --privileged --net=host python3.6 -m CameraServerBasler.pylon_video & python3.6 -m CameraServerBasler.server
  2. 输出--> /usr/bin/python3.6:查找“CameraServerBasler.server”的模块规范时出错(ModuleNotFoundError:没有名为“CameraServerBasler”的模块)

场景 2(工作)

如果我在 docker image bash 中执行相同的命令,一切都会按预期工作

  1. Docker 运行命令--> docker run --rm -it --privileged --net=host --entrypoint=/bin/bash
  2. 在 docker 镜像中执行的命令--> python3.6 -m CameraServerBasler.server & python3.6 -m CameraServerBasler.pylon_video
  3. 输出--> 两个服务器(模块)都按预期启动并运行(服务器和 pylon_video)

Docker 镜像 --> ubuntu:18.04

我在 docker run 命令中遗漏了什么吗?

标签: pythondockerubuntudocker-compose

解决方案


我已经能够使用 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

推荐阅读