Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 为什么要通过浏览器访问容器我必须设置相同的主机:容器端口?_Docker_Docker Compose - Fatal编程技术网

Docker 为什么要通过浏览器访问容器我必须设置相同的主机:容器端口?

Docker 为什么要通过浏览器访问容器我必须设置相同的主机:容器端口?,docker,docker-compose,Docker,Docker Compose,正如问题所说。这是我的情况。 我的项目文件夹是: PROJ |____docker-compose.yml |____servDir/ |____Dockerfile |____server.py 在docker-compose.yml中: service1: image: img1:v0.1 container_name: cont1 build: ./servDir/. ports: -

正如问题所说。这是我的情况。
我的项目文件夹是:

PROJ    
|____docker-compose.yml  
|____servDir/  
        |____Dockerfile  
        |____server.py  
在docker-compose.yml中:


service1:
    image: img1:v0.1
    container_name: cont1
    build: ./servDir/.
    ports:
      - "5001:5002"
server.py:

从烧瓶导入烧瓶,请求
导入json
app=烧瓶(名称)
端口=5001
@app.route(“/问候语/”)
def hello():
返回“你好,世界!”
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(host=“0.0.0.0”,port=int(port),debug=True)
当我运行
docker compose up
并转到
http://localhost:5001/greetings/
我收到一个错误连接被拒绝

相反,如果将端口设置为
5001:5001
,则可以接收页面内容

为什么??我是否应该将它们设置为始终相等,以便通过浏览器访问容器

我认为端口配置是HOST:CONTAINER,而浏览器将是主机服务

更新:
Dockerfile:

FROM python:3

WORKDIR    /home/python/app/
COPY       . /home/python/app/
RUN        chmod a+x *.py

CMD        ["python", "./server.py"]

这是正确的:
HOST:CONTAINER

尝试使用此选项为您的本地主机和LAN公开它:

service1:
    image: img1:v0.1
    container_name: cont1
    build: ./servDir/.
    ports:
      - "0.0.0.0:5001:5002"
或仅将此消息发送到您的本地主机:

service1:
    image: img1:v0.1
    container_name: cont1
    build: ./servDir/.
    ports:
      - "127.0.0.1:5001:5002"
你还写道:

当我运行docker compose并转到时,我收到一个错误连接被拒绝

查看docker compose,您应该这样访问它:

-->

更改
server.py
config:

from flask import Flask, request
import json

app = Flask(__name__)
PORT = 5002

@app.route("/greetings/")
def hello():
    return "Hello World!"

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=int(PORT), debug=True)

是的,我注意到我的打字错误,很快就改正了,但你比我快。我将尝试您的解决方案:D.thanxTry访问。如果它也不起作用,请检查您的
hosts
文件,确保您有
127.0.0.1 localhost
。我在我的hosts文件中有
127.0.0.1 localhost
,这是因为您在
server.py
配置中设置了端口
5001
,但您暴露的容器端口是
5002
,我确认。如上所述:即使我在docker compose中切换端口:``端口:-“0.0.0.0:5002:5001``它也不工作。它工作的唯一方式是当两个值相同时,
5001:5001
。为什么?