如何在撰写文件中正确定义服务

时间:2019-06-19 05:43:27

标签: python docker docker-compose

我必须在Docker Compose上运行简单的服务。第一个映像将托管先前创建的服务,而第二个映像(取决于第一个映像)将运行测试。所以我创建了Dockerfile

FROM python:2.7-slim
WORKDIR /flask
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "routes.py"]

一切正常。我创建了一些简单的测试,这些测试也有效,并将文件与routes.py放在同一目录中。 因此,我尝试创建docker-compose.yml文件并执行以下操作:

version: '2'
services:
    app:
        build: .
        command: 'python MyTest.py'
        ports:
            - "5000:5000"
    tests:
        build:
            context: Mytest.py
        depends_on:
            - app

当我运行它时,我收到一个错误:

TypeError: You must specify a directory to build in path
[13341] Failed to execute script docker-compose

那么我应该如何指定这些目录以及将其放置在apptests服务中的位置?

3 个答案:

答案 0 :(得分:0)

使用dockerfile docker compose时,您需要指定version-2字段。

检出this

答案 1 :(得分:0)

修改您的构建命令:

...
  build:
    context: .
    dockerfile: Dockerfile
...

答案 2 :(得分:0)

  

TypeError:您必须指定要在路径中构建的目录   [13341]无法执行脚本docker-compose

以上错误告诉您 let getvalue = 0.1890 let finalValue = roundf(Float(getvalue) * 100) / 100 print(finalValue) //0.19 应该是放置Dockerfile的文件夹,但是您似乎可以使用同一张图片来测试您的产品,我认为无需指定它。

我想您的context:将访问您应用容器的MyTest.py端口以进行测试。因此,您需要的是下一个:

5000

在这里,您需要注意的是:您应该在version: '2' services: app: build: . container_name: my_app ports: - "5000:5000" tests: build: . depends_on: - app command: python MyTest.py 中访问http://my_app:5000进行测试。

同时,在MyTest.py中建议您MyTest.py一段时间,因为sleep只能确保depends_ontests之后开始,但不能保证您的烧瓶已经准备好了,您也可以考虑使用this来确保订单到位。