我想创建一个 docker compose 以消除运行测试所需的命令数量。我的目标是运行一个命令,它将启动我的容器并运行我的测试。这是我第一次创建 docker compose 文件,所以请耐心等待。 docker-compose.file 位于其他两个 dockerfile 旁边。下面是我启动的 docker-compose,但我什至无法构建图像。我试图指定路径购买添加“volumes: -.:.”,但它仍然不起作用。
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"
为了运行我用来执行此操作的测试: 外壳 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
然后当我在容器内运行时:
$ npm run selenium-docker
$ npm run uat
最佳答案
TypeError: 您必须在路径中指定要构建的目录
当您将 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
)。实际上,headless-chrome 上的 context: .
也不需要,因为它是默认设置。
Docker Compose reference - build
已编辑 - 第 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
关于docker - 在 docker-compose 中构建图像时出现多个 Dockerfile 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45226010/