热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在docker-compose中构建图像时多个Dockerfiles失败

如何解决《在docker-compose中构建图像时多个Dockerfiles失败》经验,为你挑选了1个好方法。

我想创建一个docker compose,以便消除运行测试所需的命令数量.我的目标是运行一个命令,它将启动我的容器并运行我的测试.这是我第一次创建一个docker撰写文件,所以请耐心等待.docker-compose.file位于另外两个dockerfiles旁边.下面是我发起的docker-compose,但我甚至无法构建图像.我试图指定路径购买添加"卷: - .:."但它仍然不起作用.

services:
      headless-chrome:
        build: ./Dockerfile-headless-chrome
      dev-server:
        build: ./Dockerfile

Traceback (most recent call last):
  File "/usr/local/bin/docker-compose", line 11, in 
    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:

$ SCHEME=http ENV=stage DOCKER_DEV_ENTRYPOINT='"npm run dev-server"' make docker-dev

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

$ docker build -t headless-chrome -f Dockerfile-headless-chrome .
$ docker run -it --rm --net=host --cap-add=SYS_ADMIN headless-chrome /bin/bash

然后当Im在容器内运行时:

$ npm run selenium-docker
$ npm run uat

Rafael.. 13

TypeError: You must specify a directory to build in path

当您添加build: ./Dockerfile-headless-chrome到docker-compose.yml时,您正在设置上下文文件夹,而不是Dockerfile文件.你想要的属性是build - > dockerfile:

  services:
    headless-chrome:
      build:
        context: .
        dockerfile: Dockerfile-alternate
    dev-server:
      build: .

因为dev-server我没有设置任何东西,因为它将使用默认值(context: .dockerfile: Dockerfile).实际上,你也不需要context: .无头镀铬,因为它是默认的.

Docker撰写参考 - 构建

编辑 - 第2部分

该命令也存在问题.要使其自动化,您必须更改您的/bin/bash.

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

npm run selenium-docker
npm run uat

将此文件添加到您的图像(ADD)并在启动容器(CMD)时运行它.

# Dockerfile

... your commands

ADD entrypoint.sh
CMD bash entrypoint.sh

它准备好了.再次构建docker-compose build(因为您编辑了Dockerfile)并运行docker-compose up



1> Rafael..:

TypeError: You must specify a directory to build in path

当您添加build: ./Dockerfile-headless-chrome到docker-compose.yml时,您正在设置上下文文件夹,而不是Dockerfile文件.你想要的属性是build - > dockerfile:

  services:
    headless-chrome:
      build:
        context: .
        dockerfile: Dockerfile-alternate
    dev-server:
      build: .

因为dev-server我没有设置任何东西,因为它将使用默认值(context: .dockerfile: Dockerfile).实际上,你也不需要context: .无头镀铬,因为它是默认的.

Docker撰写参考 - 构建

编辑 - 第2部分

该命令也存在问题.要使其自动化,您必须更改您的/bin/bash.

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

npm run selenium-docker
npm run uat

将此文件添加到您的图像(ADD)并在启动容器(CMD)时运行它.

# Dockerfile

... your commands

ADD entrypoint.sh
CMD bash entrypoint.sh

它准备好了.再次构建docker-compose build(因为您编辑了Dockerfile)并运行docker-compose up


推荐阅读
author-avatar
夜夜0603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有