Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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容器以处理HTTP请求_Docker_Reverse Proxy_File Management_Docker Volume - Fatal编程技术网

启动Docker容器以处理HTTP请求

启动Docker容器以处理HTTP请求,docker,reverse-proxy,file-management,docker-volume,Docker,Reverse Proxy,File Management,Docker Volume,我正在构建一个web应用程序,用户可以在其中管理项目中的文件。每个用户可以有多个项目,每个项目可以有多个文件。我使用Docker实现了这一点,其中每个项目都是Docker卷。当用户单击webapp界面中的按钮以修改其项目中的文件时,web服务器将配置并启动worker(另一个Docker实例)以修改Docker卷中的文件。到目前为止,这一切都非常有效 但是,现在我想通过HTTP提供这些项目文件。我心目中的策略是: web服务器(如nginx)接受来自用户的传入HTTP请求 web服务器检查传入的

我正在构建一个web应用程序,用户可以在其中管理项目中的文件。每个用户可以有多个项目,每个项目可以有多个文件。我使用Docker实现了这一点,其中每个项目都是Docker卷。当用户单击webapp界面中的按钮以修改其项目中的文件时,web服务器将配置并启动worker(另一个Docker实例)以修改Docker卷中的文件。到目前为止,这一切都非常有效

但是,现在我想通过HTTP提供这些项目文件。我心目中的策略是:

  • web服务器(如nginx)接受来自用户的传入HTTP请求
  • web服务器检查传入的请求以确定请求的项目。例如,如果URL是
    sparkle-pony.myapp.com
    ,那么我们知道正在请求
    sparkle-pony
    项目。如果此项目不存在,nginx将以
    404notfound
    响应进行响应
  • web服务器还检查用户是否已登录,以及该登录用户是否具有查看项目的权限。如果没有,web服务器将以
    403禁止的
    HTTP响应进行响应
  • web服务器配置并启动一个新的Docker容器,可能是另一个nginx进程。此配置的一部分包括将正确的Docker卷安装到新容器上。我们将这个新发布的容器称为“内部”容器,现有的容器称为“外部”容器
  • 外部容器将此HTTP请求转交给内部容器,或者充当内部容器响应的代理
  • 内部容器可以访问项目的正确Docker卷,并在知道请求用户具有正确权限的情况下进行保护,它会检查URL路径并从Docker卷提供正确的项目文件。在请求得到适当处理后,内部容器将关闭
  • 尽管如此,我有三个问题:

  • 这是一个合理的策略吗?它确实涉及为每个传入的HTTP请求启动一个新的Docker容器,但我认为这没关系
  • 将HTTP请求从一个容器传递到另一个容器的最佳方式是什么?还是外部容器必须代理来自内部容器的响应
  • 有人能提供一些关于如何建立这样一个项目的建议或例子吗?可能有一些工具或技术我还不知道
  • 谢谢大家!