通过docker compose构建mlflow时的Nginx身份验证问题

通过docker compose构建mlflow时的Nginx身份验证问题,docker,debugging,nginx,google-cloud-platform,mlflow,Docker,Debugging,Nginx,Google Cloud Platform,Mlflow,我正在尝试在谷歌云平台(GCP)上为谷歌云运行(GCR)对接PostgreSQL和nginx配置 然而,在将任何东西部署到GCP之前,我想让本地部署工作起来。我找到了一本详细介绍环境设置过程的指南。遵循了指南(不包括SQL部分),我可以在localhost:80上看到mlflow UI,因为nginx将端口80上的流量重定向到5000。为了添加身份验证,我发现我可以使用etc/nginx/目录中的sudohtpasswd-c.htpasswd来添加身份验证,然后添加 location \ {

我正在尝试在谷歌云平台(GCP)上为谷歌云运行(GCR)对接PostgreSQL和nginx配置

然而,在将任何东西部署到GCP之前,我想让本地部署工作起来。我找到了一本详细介绍环境设置过程的指南。遵循了指南(不包括SQL部分),我可以在
localhost:80
上看到mlflow UI,因为nginx将端口80上的流量重定向到5000。为了添加身份验证,我发现我可以使用
etc/nginx/
目录中的
sudohtpasswd-c.htpasswd
来添加身份验证,然后添加

location \ {
   auth_basic "Private Property";
   auth_basic_user_file .htpasswd;
}
转到
nginx.conf
(本例中为
mlflow.conf
)使其在线显示。问题是,当我现在进入
localhost:80
并输入我的用户名/密码时,我会继续看到

[error] 6#6: *1 open() "/etc/nginx/.htpasswd" failed (2: No such file or directory)
docker中,当日志被打印到终端时,docker将它们组合起来,因此我无法在
localhost:80上看到mlflow UI(一个空白屏幕或nginx 403错误)

现在,我看了其他几篇文章(如和),在我看来nginx没有读取
etc/nginx/
目录文件中
.htpasswd
的正确权限,或者文件的路径不正确,即路径必须引用
nginx.conf
文件

尽管我针对数据科学文件对上述内容进行了更正,但问题仍然存在。我在这件事上耽搁了一段时间。发生这种情况的具体原因是什么

编辑: 以下是我的目录结构,以防有所帮助:

mlflow-docker/:
  mlflow/:
    Dockerfile
  nginx/:
    Dockerfile
    mlflow.conf
    nginx.conf
  docker-compose.yml

您需要在容器的文件系统中添加.htpasswd文件

在项目的nginx文件夹中生成密码文件

sudo htpasswd -c .htpasswd sammy
将密码文件复制到nginx容器的目录。在nginx dockerfile中添加以下行

COPY .htpasswd /etc/nginx

你能分享nginx Dockerfile吗?如果你在《走向数据科学》一文中向下滚动到“集装箱化”,你将能够看到nginx和mlflow dockerfiles。这是一篇文章。