在docker-compose中构build图像时发生多个Dockerfiles失败

我想创build一个docker组合来消除运行我的testing所需的命令的数量。 我的目标是运行一个命令,它将启动我的容器并运行我的testing。 这是我第一次创build一个docker撰写文件,所以请耐心等待。 docker-compose.file位于其他两个dockerfiles旁边。 下面是我已经发起的docker构成,但我甚至不能build立图像。 我试图指定path购买添加“卷: – 。:。”但它仍然无法正常工作。

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 <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" 

为了运行我使用的testing: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在容器里面运行Im时:

 $ npm run selenium-docker $ npm run uat 

TypeError: You must specify a directory to build in path

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

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

对于dev-server我不设置任何东西,因为它将使用默认( context: .dockerfile: Dockerfile )。 其实,你也不需要context: . 在无头镀铬,因为它是默认的。

Docker撰写参考 – 构build

编辑 – 第2部分

命令也有问题。 为了自动化,你必须改变你的/bin/bash

为所有testing创build一个文件(entrypoint.sh):

 npm run selenium-docker npm run uat 

将这个文件添加到你的图像( ADD )并运行它启动容器( CMD )。

 # Dockerfile ... your commands ADD entrypoint.sh CMD bash entrypoint.sh 

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