通过 docker-compose 构建 mlflow 时出现 Nginx 身份验证问题

Nginx authentication issues when building mlflow through docker-compose

我正在尝试在 Google 云平台 (GCP) 上使用 Google 云 运行 (GCR) 的 PostgreSQL 和 nginx 配置对 mlflow 进行 docker 化。

然而,在将任何东西部署到 GCP 之前,我想让本地部署正常工作。我发现 this guide that details the process of setting up the environment. Having followed the guide (excluding the SQL part), I can see the mlflow UI on localhost:80 as nginx redirects traffic on port 80 to 5000. To add authentication, I found here 我可以使用 etc/nginx/ 目录中的 sudo htpasswd -c .htpasswd <username> 然后添加

location \ {
   auth_basic "Private Property";
   auth_basic_user_file .htpasswd;
}

nginx.conf(或本例中的 mlflow.conf)以使其显示在网上。问题是,当我去 localhost:80 now 并输入我的 username/password 时,我继续看到

[error] 6#6: *1 open() "/etc/nginx/.htpasswd" failed (2: No such file or directory)

docker-compose up 日志中打印到终端,因此 我无法在 UI 上看到 mlflow UI =14=](空白屏幕或 nginx 403 错误)。

现在,我查看了其他几篇文章(例如 this one and this one),在我看来 nginx 没有正确的权限来读取 .htpasswd 中的 etc/nginx/ 目录文件或文件路径不正确,即路径必须参考 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