首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个Dockerfile在构建停靠-组合中的图像时失败

多个Dockerfile在构建停靠-组合中的图像时失败
EN

Stack Overflow用户
提问于 2017-07-20 22:10:38
回答 1查看 7.1K关注 0票数 12

为了消除运行测试所需的命令数量,我希望创建一个对接器组合。我的目标是运行一个命令,它将启动我的容器并运行我的测试。这是我第一次创建一个码头撰写文件,所以请耐心。docker-come.file位于其他两个dockerfile的旁边。下面是我已经启动的对接-合成,但我甚至不能构建图像。我尝试指定path购买,添加“volumes:-.:.”但还是不起作用。

代码语言:javascript
复制
services:
      headless-chrome:
        build: ./Dockerfile-headless-chrome
      dev-server:
        build: ./Dockerfile
代码语言:javascript
复制
Traceback (most recent call last):
  File "/usr/local/bin/docker-compose", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/site-packages/compose/cli/main.py", line 68, in main
    command()
  File "/usr/local/lib/python2.7/site-packages/compose/cli/main.py", line 118, in perform_command
    handler(command, command_options)
  File "/usr/local/lib/python2.7/site-packages/compose/cli/main.py", line 926, in up
    scale_override=parse_scale_args(options['--scale']),
  File "/usr/local/lib/python2.7/site-packages/compose/project.py", line 401, in up
    svc.ensure_image_exists(do_build=do_build)
  File "/usr/local/lib/python2.7/site-packages/compose/service.py", line 311, in ensure_image_exists
    self.build()
  File "/usr/local/lib/python2.7/site-packages/compose/service.py", line 888, in build
    buildargs=build_args
  File "/usr/local/lib/python2.7/site-packages/docker/api/build.py", line 137, in build
    raise TypeError("You must specify a directory to build in path")
TypeError: You must specify a directory to build in path
version: "3"

为了运行我用来执行以下操作的测试: Shell 1:

代码语言:javascript
复制
$ SCHEME=http ENV=stage DOCKER_DEV_ENTRYPOINT='"npm run dev-server"' make docker-dev

当它运行时,我需要在一个新的shell (shell 2)中运行下面的代码:

代码语言:javascript
复制
$ docker build -t headless-chrome -f Dockerfile-headless-chrome .
$ docker run -it --rm --net=host --cap-add=SYS_ADMIN headless-chrome /bin/bash

然后,当我在容器内运行时:

代码语言:javascript
复制
$ npm run selenium-docker
$ npm run uat
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-20 22:32:35

TypeError: You must specify a directory to build in path

当您将build: ./Dockerfile-headless-chrome添加到docker-compose.yml中时,您将设置上下文文件夹,而不是Dockerfile文件。您需要的属性是构建-> dockerfile。

代码语言:javascript
复制
  services:
    headless-chrome:
      build:
        context: .
        dockerfile: Dockerfile-alternate
    dev-server:
      build: .

对于dev-server,我不设置任何内容,因为它将使用默认值(context: .dockerfile: Dockerfile)。实际上,您也不需要context: .在无头铬,因为它是默认的。

船坞构图参考建造

编辑-第2部分

这个命令也有一个问题。要实现自动化,您必须更改/bin/bash

为所有测试(entrypoint.sh)创建一个文件:

代码语言:javascript
复制
npm run selenium-docker
npm run uat

将此文件添加到映像(ADD)中,并在启动容器(CMD)时运行它。

代码语言:javascript
复制
# Dockerfile

... your commands

ADD entrypoint.sh
CMD bash entrypoint.sh

它已经准备好了。重新构建docker-compose build (因为您编辑了Dockerfile)并运行docker-compose up

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45226010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档