在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