如何使用 NGINX 访问写在 docker 容器卷上的文件并共享 URL 到客户端

How to access the file written on docker container volumes and share the URL to client side using NGINX

我刚开始使用 Docker。 我已经安装了 MUP (meteor-up) 用于部署我的流星应用程序。并且在内部使用 Docker.

使用 MUP 之前(Docker):-

我只是将一些文件 (CSV) 写入 Ubuntu 机器中的 /opt/AHD 目录。 在 NGINX 的帮助下,我只需将 URL 发送到客户端并自动下载该文件。

我的 NGINX 配置是:-

server {
    listen 7004;
    listen [::]:7004;

    server_name _;

    root /;
    #index index.html;

    location /opt {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # Following is necessary for Websocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    autoindex on;
    }

我只是将文件的 URL 从服务器端共享到客户端,例如:-

http://myapp:7004/opt/AHD/1536673499271.csv

那是 运行 完美的,但是当我使用内部使用 Docker 的 MUP 时。所以现在当我浏览时发现我的机器 /opt/AHD 目录中没有任何文件写入。 因为它们是在容器范围内编写的,即它们是在

中编写的

var/lib/docker/overlay2/e4cc915015ea4f1e177175b52675f67223235c909b7680dfbe9a566af303afe7/diff/opt/AHD/1536673499271.csv

以上目录根据docker即可。

但是因为我想分享 URL 到客户端,所以 CSV 文件在客户端下载。

所以我的问题是:-

我如何配置我的 Nginx 以便它使用容器目录而不是我的机器目录,我将能够通过 NGINX 在客户端下载文件。

我已经浏览了一些博客,但不知道如何以及需要什么配置来为我的 nginx 提供访问 docker 容器文件。

非常感谢任何帮助。

谢谢

您是否尝试将 /opt/AHD 目录与容器内的 /opt/AHD 目录挂载?

请查看此页面:http://meteor-up.com/docs.html

在此处的示例配置中,查看卷部分

// lets you add docker volumes (optional). Can be used to
// store files between app deploys and restarts.
volumes: {
  // passed as '-v /host/path:/container/path' to the docker run command
  '/host/path': '/container/path',
  '/second/host/path': '/second/container/path'
},

你可以用这个。只需添加另一行

'/opt/AHD/': '/opt/AHD'

这会将您计算机上的特定目录挂载到容器上的特定目录。这将导致容器将文件写入您机器的目录,您可以从那里使用 NGINX 继续前进。