Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何一次启动多个容器共享一个Dockerfile_Docker_Docker Compose - Fatal编程技术网

如何一次启动多个容器共享一个Dockerfile

如何一次启动多个容器共享一个Dockerfile,docker,docker-compose,Docker,Docker Compose,我想用一个命令启动数百个容器 容器A将目录更改为A,然后在启动时运行A.rb 容器B将目录更改为B,然后在启动时运行B.rb 容器。。。将目录更改为…,然后在启动时运行…rb 所有这些容器应共享同一Dockerfile 我需要切换到相应的文件夹,然后执行脚本 但我犯了个错误 未能执行:exec:“cd”:在$PATH中找不到可执行文件 首先,从Dockerfile构建的映像必须包括a/r.rb和b/b.rb 这意味着Dockerfile有2个COPY指令来包含这些脚本 因为您只需要一个Dock

我想用一个命令启动数百个容器

容器A将目录更改为
A
,然后在启动时运行
A.rb
容器B将目录更改为
B
,然后在启动时运行
B.rb
容器。。。将目录更改为
,然后在启动时运行
…rb

所有这些容器应共享同一Dockerfile

我需要切换到相应的文件夹,然后执行脚本

但我犯了个错误

未能执行:exec:“cd”:在$PATH中找不到可执行文件


首先,从Dockerfile构建的映像必须包括
a/r.rb
b/b.rb

这意味着Dockerfile有2个
COPY
指令来包含这些脚本

因为您只需要一个Dockerfile,生成一个图像,所以应该在其中包含
COPY start.sh
脚本和
CMD start.sh
指令。根据环境变量运行
a/r.rb
b/r.rb
的脚本(现在包含在图像中)(例如
MUSTRUN

请记住,一旦
r.rb
脚本退出,您的容器就会停止。

要保持它运行,您需要更改
start.sh
,以便无限循环,有点像“”。

您尝试过什么吗?
  a:
    build: .
    command: cd a ; ruby a.rb
    volumes:
        - .:/crawler
    ports:
      - 5901:5901
  b:
    build: .
    command: cd b ; ruby b.rb
    volumes:
        - .:/crawler
    ports:
      - 5902:5902
docker run -e MUSTRUN=a myimage
or 
docker run -e MUSTRUN=b myimage