【问题标题】:How to use expose in Dockerfile如何在 Dockerfile 中使用暴露
【发布时间】:2020-06-11 08:41:00
【问题描述】:

在我定义的 dockerfile 中:

EXPOSE 5050

有没有办法给它一个端点名称,就像我们可以在任何 REST 框架中一样,这样我就可以向localhost:5050/<ENDPOINT_NAME> 发送请求?

【问题讨论】:

  • 暴露 5050 端口后,您可以使用端口转发 "docker run -d -p 5050:5050 image_name" 运行 docker 映像,您可以使用 ip 和端口 5050 获得响应。
  • @TayburRahaman 我想以 localhost:5050/getQuery 的身份访问它。那么,我们需要在哪里或如何定义“getQuery”?
  • 你需要某种 HTTP 反向代理; Nginx 是一个流行的选择。在 Docker 级别,不能保证您的服务实际上会使用 HTTP(标准 MySQL、MongoDB、PostgreSQL 和 Redis 映像都EXPOSE它们的正常端口)。

标签: docker dockerfile endpoint


【解决方案1】:

您需要使用反向代理软件。这是一个非常流行的易于使用的 Nginx 容器:

https://hub.docker.com/r/linuxserver/letsencrypt/

之后,您只需配置代理配置以满足您的需求。一个外观的基本概念是:

location /yourapp {
    return 301 $scheme://$host/yourapp/;
}
location ^~ /yourapp/ {

    include /config/nginx/proxy.conf;
    resolver 127.0.0.11 valid=30s;
    set $upstream_app yourapp;
    set $upstream_port 5050;
    set $upstream_proto http;
    proxy_pass $upstream_proto://$upstream_app:$upstream_port;

}

使用上面的示例,您可以输入如下内容:

https://yourdomain.com/yourapp/getQuery

它会被重定向到5050 端口上您想要的位置。

这是他们当前反向代理配置的完整列表,让您对它们的工作方式有更多想法:

https://github.com/linuxserver/reverse-proxy-confs

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2021-11-22
    • 2010-09-14
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多