使用 CLI 使用 docker-compose 部署到 Azure 在访问代理页面时会超时
Deployment with docker-compose to Azure using CLI gives timeout when visiting agent page
我有 docker-compose
个文件:
version: "3"
services:
app2:
image: kamilwit/dockerdocker_app2
container_name: app2
build:
context: ./app2
volumes:
- app2data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "8000:8080"
app:
image: kamilwit/dockerdocker_app
container_name: app
build:
context: ./app
volumes:
- app1data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "8001:8080"
volumes:
app1data:
app2data:
的说明
确切地说,我执行了以下命令:
az group create --name myResourceGroup --location westus
az acs create --name mySwarmCluster --orchestrator-type Swarm --resource-group myResourceGroup --generate-ssh-keys --agent-count 1
然后我从
得到了output
az network public-ip list --resource-group myResourceGroup --query "[*].{Name:name,IPAddress:ipAddress}" -o table
Name IPAddress
-------------------------------------------------------------- --------------
swarm-agent-ip-myswarmclu-myresourcegroup-76f1d9agent-EEACED89 104.42.144.82
swarm-master-ip-myswarmclu-myresourcegroup-76f1d9mgmt-EEACED89 104.42.255.141
我通过以下方式连接到 ssh:
ssh -p 2200 -fNL 2375:localhost:2375 azureuser@104.42.255.141
我使用:
export DOCKER_HOST=:2375
然后我开始我的 docker-compose 文件:
docker-compose up -d
docker ps
的输出是:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3bfff4427e44 kamilwit/dockerdocker_app "/bin/sh /data/app..." 18 minutes ago Up 8 minutes 10.0.0.5:8001->8080/tcp swarm-agent-EEACED89000001/app
c297ea34547e kamilwit/dockerdocker_app2 "/bin/sh /data/app..." 18 minutes ago Up 8 minutes 10.0.0.5:8000->8080/tcp swarm-agent-EEACED89000001/app2
但是在上面的示例中,我无法通过 agent
从 ip
连接到我的站点,我尝试去
104.42.144.82:8000
和 104.42.144.82:8001/#!/registration
甚至 10.0.0.5:8000
我有空。当我在本地 运行 这个 docker 文件时,我会像那样连接到我的站点:
localhost:8000
和 localhost:8001/#!/registration
试穿
az --version
azure-cli (2.0.32)
我尝试在 Azure
中打开端口:
但这并没有帮助。
我也尝试从移动设备 phone(上面的另一个网络)打开该站点没有帮助。
编辑:
使用 docker-compose
:
version: "3"
services:
app2:
image: kamilwit/dockerdocker_app2
container_name: app2
build:
context: ./app2
volumes:
- app2data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "80:8080"
app:
image: kamilwit/dockerdocker_app
container_name: app
build:
context: ./app
volumes:
- app1data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "8001:8080"
volumes:
app1data:
app2data:
按照问题中的相同步骤,我可以访问端口 80 上的第一个站点,但我无法访问端口 8001 上的站点。
如果我将端口从 8001 更改为 80,并保留 8000 - 那么我可以访问端口 80 上的站点,但不能访问端口 8000 上的站点。
首先,检查您的 docker 图像是否在 azure 中工作,并且您可以从 swarm 主服务器打开网页。
ssh -p 2200 azureuser@104.42.255.141 # Connect via ssh to your swarm master
sudo apt-get install lynx # Install lynx - console web browser
docker ps # check IP address of app
lynx 10.0.0.5:8000 # Open your app in lynx (using private IP address)
如果页面未加载,则图像有问题或您的应用未正常启动。
如果页面加载,则意味着网络基础设施存在问题。 Swarm 代理的负载均衡器中可能缺少规则。默认情况下,80
、443
和 8080
有开放端口。只需为 8000
添加新规则,稍等片刻。
我有 docker-compose
个文件:
version: "3"
services:
app2:
image: kamilwit/dockerdocker_app2
container_name: app2
build:
context: ./app2
volumes:
- app2data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "8000:8080"
app:
image: kamilwit/dockerdocker_app
container_name: app
build:
context: ./app
volumes:
- app1data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "8001:8080"
volumes:
app1data:
app2data:
的说明
确切地说,我执行了以下命令:
az group create --name myResourceGroup --location westus
az acs create --name mySwarmCluster --orchestrator-type Swarm --resource-group myResourceGroup --generate-ssh-keys --agent-count 1
然后我从
得到了output
az network public-ip list --resource-group myResourceGroup --query "[*].{Name:name,IPAddress:ipAddress}" -o table
Name IPAddress
-------------------------------------------------------------- --------------
swarm-agent-ip-myswarmclu-myresourcegroup-76f1d9agent-EEACED89 104.42.144.82
swarm-master-ip-myswarmclu-myresourcegroup-76f1d9mgmt-EEACED89 104.42.255.141
我通过以下方式连接到 ssh:
ssh -p 2200 -fNL 2375:localhost:2375 azureuser@104.42.255.141
我使用:
export DOCKER_HOST=:2375
然后我开始我的 docker-compose 文件:
docker-compose up -d
docker ps
的输出是:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3bfff4427e44 kamilwit/dockerdocker_app "/bin/sh /data/app..." 18 minutes ago Up 8 minutes 10.0.0.5:8001->8080/tcp swarm-agent-EEACED89000001/app
c297ea34547e kamilwit/dockerdocker_app2 "/bin/sh /data/app..." 18 minutes ago Up 8 minutes 10.0.0.5:8000->8080/tcp swarm-agent-EEACED89000001/app2
但是在上面的示例中,我无法通过 agent
从 ip
连接到我的站点,我尝试去
104.42.144.82:8000
和 104.42.144.82:8001/#!/registration
甚至 10.0.0.5:8000
我有空。当我在本地 运行 这个 docker 文件时,我会像那样连接到我的站点:
localhost:8000
和 localhost:8001/#!/registration
试穿
az --version
azure-cli (2.0.32)
我尝试在 Azure
中打开端口:
但这并没有帮助。 我也尝试从移动设备 phone(上面的另一个网络)打开该站点没有帮助。
编辑:
使用 docker-compose
:
version: "3"
services:
app2:
image: kamilwit/dockerdocker_app2
container_name: app2
build:
context: ./app2
volumes:
- app2data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "80:8080"
app:
image: kamilwit/dockerdocker_app
container_name: app
build:
context: ./app
volumes:
- app1data:/data
environment:
- LOGGING_LOG-FILES-PATH=/opt/tomcat/logs
ports:
- "8001:8080"
volumes:
app1data:
app2data:
按照问题中的相同步骤,我可以访问端口 80 上的第一个站点,但我无法访问端口 8001 上的站点。 如果我将端口从 8001 更改为 80,并保留 8000 - 那么我可以访问端口 80 上的站点,但不能访问端口 8000 上的站点。
首先,检查您的 docker 图像是否在 azure 中工作,并且您可以从 swarm 主服务器打开网页。
ssh -p 2200 azureuser@104.42.255.141 # Connect via ssh to your swarm master
sudo apt-get install lynx # Install lynx - console web browser
docker ps # check IP address of app
lynx 10.0.0.5:8000 # Open your app in lynx (using private IP address)
如果页面未加载,则图像有问题或您的应用未正常启动。
如果页面加载,则意味着网络基础设施存在问题。 Swarm 代理的负载均衡器中可能缺少规则。默认情况下,80
、443
和 8080
有开放端口。只需为 8000
添加新规则,稍等片刻。