通过集装箱化的前端Web服务器直接提供静态文件?

我有一个基于PHP / FastCGI的Web应用程序的Docker Compose文件,我想通过Nginx公开(共3个容器)。 如果两个Web应用程序容器将其静态文件存储在“/ var / www / html”中,那么如何才能让Nginx容器直接提供静态文件?

我找不到一种方法来完成这个任务,这意味着我必须让这两个networking应用程序为自己的静态文件提供服务。 如果我不能更改应用程序代码(这里是这种情况),这将需要从FastCGI转移到HTTP。

如果在不同的path上安装容器卷的方法,这可能是可行的,就像你可以用主机系统一样。 有什么办法可以完成这样的事情,除了通过主机系统来完成吗?

解决的办法是将/var/www/html文件夹直接挂载到nginx上,以使用服务静态文件的nginxfunction。 为了简单起见,我还build议使用数据容器将html文件夹挂载到所有3个容器。 最终的docker-compose.yml将如下所示:

 nginx: image: nginx ports: - 80:80 links: - app1 - app2 volumes_from: - html app1: image: [app1] volumes_from: - html app2: image: [app2] volumes_from: - html html: image: busybox volumes: - html:/var/www/html 

和nginx的configuration是这样的:

 server { root /var/www/html; location / { } location ~ \.php { fastcgi_pass localhost:8000; ... } location /images/ { root /var/www/html/images; } location ~ \.(mp3|mp4) { root /var/www/html; } } 

上面的configuration将服务器/images文件夹和任何mp3/mp4文件通过静态资源。