我有一个烧瓶应用程序正在尝试进行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
但是当我尝试访问该网站时会引发错误
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
答案 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的情况下运行应用程序