虚拟机上docker部署flask项目,外部局域网无法访问接口,需要通过Nginx进行端口映射实现。

1、安装Nginx

sudo apt-get install nginx

2、配置

切换到nginx 的配置文件夹目录下:

cd /etc/nginx/conf.d

创建default.conf文件,将80端口映射到5000端口上。

修改读写文件权限:sudo chmod -R 777 *

service_name:虚拟机地址

server {
        listen 8088;
        server_name 192.168.1.125:8088;
        include /etc/nginx/default.d/*.conf;
        location / {
        proxy_pass http://127.0.0.1:5000;

        # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
       # proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:8088;
        #proxy_set_header X_Nginx_Proxy true;

        }
        error_page 404 /404.html;
                location = /40x.html{}
        error_page 500 502 503 504 /50x.html;
                location = /50x.html{}

}

3、重启Nginx

sudo service nginx restart

查看5000端口是否启动:netstat -tulnp | grep 5000

4、flask运行测试

        python3 app.py

 

 在虚拟机上的有两个地址均可访问:

127.0.0.1:5000

192.168.1.125:8088

外部局域网postman访问:

5、docker运行测试

虚拟机上运行容器:

docker run -d -p  127.0.0.1:5000:5000 --name demo flaskdemo

在虚拟机上的有三个地址均可访问:

127.0.0.1:5000

172.17.0.3:5000

192.168.1.125:8088

 

外部局域网postman访问:

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐