docker-network
与和存在误解depends_on
。我已经在这里
问了一个关于网络主要部分的问题。
第一个问题:
depends_on
在我的情况下工作相当奇怪。
我创建了 2 个测试image
“a”并具有以下配置docker-compose.yml
:
version: '3.7'
services:
app1:
image: test
build: app1
command: python3 app1.py
app2:
image: test2
build: .
depends_on:
- app1
但在日志中,出于某种原因,容器来自app2
:
root@icyftl:~/temp# docker-compose up
Building app2
Step 1/4 : from ubuntu:latest
---> 1e4467b07108
Step 2/4 : RUN apt-get update
---> Using cache
---> 08682223c800
Step 3/4 : RUN apt-get install curl -y
---> Using cache
---> 6c6b82a3dca4
Step 4/4 : RUN curl http://app1:8000/test
---> Running in ad21307744f6
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (7) Failed to connect to app1 port 8000: Connection refused
ERROR: Service 'app2' failed to build: The command '/bin/sh -c curl http://app1:8000/test' returned a non-zero code: 7
因此,我试图理解我在第二个问题中描述的问题的尝试被打断了。
第二个问题:
如何flask
在容器中提升服务器并从另一个容器访问它?
正如我已经理解的那样,在创建一堆容器时docker-compose.yml
,它会自动上升bridge
。
如果我可以ping -c 100 app1
从第二个容器中制作并且它可以工作,那么我如何联系在flask
其上引发的服务器0.0.0.0
?curl http://app1:8000/test
?
出现第一个问题是因为调用
app1
是在组装阶段进行的,即 您有一个尝试访问Dockerfile
的命令:app2
app2
RUN curl http://app1:8000/test
并且构建阶段
app1
还没有开始。对于第二个问题,答案是肯定的。如果两个服务都在同一个网络上(默认情况下来自一个 compose 文件的服务就是这种情况),那么它们中的每一个的容器都可以通过主机名供另一个使用,主机名与 compose 文件中的服务名称匹配。