Python 如何在compose文件中正确定义服务
我必须在Docker Compose上运行简单服务。第一个映像将承载先前创建的服务,而依赖于第一个映像的第二个映像将运行测试。所以我创建了Python 如何在compose文件中正确定义服务,python,docker,docker-compose,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"] 一切正常。我创建了一些简单的测试,它们也
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
那么,我应该如何指定这些目录以及可以将其放置在
app
或tests
服务中的位置?在使用version-2
docker compose时,您需要指定dockerfile
字段
签出。在使用
version-2
docker compose时,需要指定dockerfile
字段
签出。修改生成命令:
...
build:
context: .
dockerfile: Dockerfile
...
修改生成命令:
...
build:
context: .
dockerfile: Dockerfile
...
TypeError:必须指定要在路径中生成的目录
[13341]无法执行脚本docker compose
上面的错误告诉您上下文:
应该是放置Dockerfile的文件夹,但是您似乎可以使用相同的图像来测试您的产品,我认为不需要指定它
我猜您的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
中进行测试
<> P>同时,在<代码> MyTest.Py 建议您<代码>睡眠>代码>某段时间,因为<代码>依赖> < /代码>可以确保<代码>测试在上下文:
应该是放置Dockerfile的文件夹,但是您似乎可以使用相同的图像来测试您的产品,我认为不需要指定它
我猜您的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
中进行测试
<> P>同时,在<代码> MyTest.Py 建议您<>代码>睡眠>代码>一段时间,因为<代码> RealsSon 只是可以确保<代码>测试在
无法启动服务应用程序:b'驱动程序未能在端点挑战上编程外部连接(…):绑定0.0.0:5000失败:端口已分配'可能是由于在
MyTest.py中有一段时间未睡眠造成的
您的主机似乎已经使用了5000
端口,请在主机上使用sudo netstat-oanltp | grep 5000
进行确认,所有这些都只需更改为6000:5000
进行快速检查。刚刚解决。我有一个容器,它使用5000
端口,并且刚刚停止它。感谢您的帮助。您的解决方案当然有效,但我遇到一个错误,无法启动服务应用程序:b'驱动程序未能在端点挑战上编程外部连接(…):绑定0.0.0:5000失败:端口已分配'可能是由于在
MyTest.py中有一段时间未睡眠造成的
您的主机似乎已经使用了5000
端口,请在主机上使用sudo netstat-oanltp | grep 5000
进行确认,所有这些都只需更改为6000:5000
进行快速检查。刚刚解决。我有一个容器,它使用5000
端口,并且刚刚停止它。谢谢你的帮助。