【问题标题】:How could I launch multiple container at a time shared one Dockerfile如何一次启动多个容器共享一个 Dockerfile
【发布时间】:2015-06-12 06:58:44
【问题描述】:

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

容器 A 将在启动时将目录更改为 a 然后运行 ​​a.rb

容器 B 会在启动时将目录更改为 b 然后运行 ​​b.rb

Container ... 将目录更改为...,然后在启动时运行....rb

所有这些容器都应该共享同一个 Dockerfile。

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

但我有错误

执行失败:执行:“cd”:$PATH 中找不到可执行文件

  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 docker-compose


【解决方案1】:

首先,从 Dockerfile 构建的镜像必须包含 a/r.rbb/b.rb
这意味着 Dockerfile 有 2 个 COPY 指令,用于包含这些脚本。

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

docker run -e MUSTRUN=a myimage
or 
docker run -e MUSTRUN=b myimage

请注意,一旦r.rb 脚本退出,您的容器将停止。
要让它继续运行,您需要更改start.sh 以便无限循环,有点像“A Daemonized Hello world”。

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 2023-02-11
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    相关资源
    最近更新 更多