码头工人港口暴露问题

时间:2019-11-25 20:05:44

标签: python docker flask containers port

我有一个烧瓶应用程序正在尝试进行dockerize,但是端口未正确暴露。

DockerFile

FROM tiangolo/uwsgi-nginx-flask:python3.7

LABEL Name=testAPP Version=0.0.1
EXPOSE 5000

ADD . /app
WORKDIR /app

# Using pip:
RUN python3 -m pip install -r requirements.txt

ENTRYPOINT [ "python3" ]
CMD ["application.py" ,"runserver","-h 0.0.0.0"]

Docker构建成功:

docker build --rm -f "Dockerfile" -t testAPP .

Docker Run正在成功构建映像

docker run -device -expose 5000:5000 testAPP

也尝试过

docker run --rm -d -p 443:443/tcp -p 5000:5000/tcp -p 80:80/tcp testAPP

但是当我尝试访问该网站时会引发错误

site can't be reached error

Flask App(在APP内)

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000)

执行命令

Docker container ps

CONTAINER ID     IMAGE        COMMAND      CREATED          STATUS    PORTS      NAMES
 8724cdb38e14    testAPP   "/entrypoint.sh pyth…" 15 seconds ago   Up 13 seconds    80/tcp, 443/tcp, 0.0.0.0:5000->5000/tcp  funny_galois

2 个答案:

答案 0 :(得分:0)

将端口定义为 expert 本身不会发布端口。尝试使用标志 -p ,例如:

  

-p container_port:local_port

示例:

docker run -p 8080:8080 -v ~/Code/PYTHON/ttftt-recipes-manager:/app python_dev

但是在运行之前,请尝试检查指定端口上是否已经在运行其他东西,例如:

lsof -i :PORTNUM 

以及之后的类似内容:

docker logs my_container

答案 1 :(得分:0)

确保将本地主机端口映射到容器的端口

docker run -p 127.0.0.1:8000:8000 your_image

将应用程序放入容器后,您要在主机设置为0.0.0.0的情况下运行应用程序