【问题标题】:Unable to find ssl cert or key file in docker build在 docker build 中找不到 ssl 证书或密钥文件
【发布时间】:2020-06-08 09:32:27
【问题描述】:

我有一个使用 gunicorn 生成烧瓶应用程序的 docker 文件。出于我的目的,我需要使用 https,所以我使用 openssl 设置 ssl。但是我一直遇到这个错误:

[2020-02-24 17:01:18 +0000] [1] [INFO] Starting gunicorn 20.0.4
Traceback (most recent call last):
  File "/usr/local/bin/gunicorn", line 11, in <module>
    sys.exit(run())
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/app/wsgiapp.py", line 58, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/app/base.py", line 228, in run
    super().run()
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/app/base.py", line 72, in run
    Arbiter(self).run()
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/arbiter.py", line 198, in run
    self.start()
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/arbiter.py", line 155, in start
    self.LISTENERS = sock.create_sockets(self.cfg, self.log, fds)
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/sock.py", line 162, in create_sockets
    raise ValueError('certfile "%s" does not exist' % conf.certfile)
ValueError: certfile "server.crt" does not exist

这是我的 Dockerfile:

FROM ubuntu:latest

RUN apt-get update && apt-get install python3-pip -y && \
    apt-get install python3-dev openssl


RUN openssl req -nodes -new -x509 -keyout server.key -out server.cert -subj "/C=US/ST=MD/L=Columbia/O=Example/OU=ExampleOU/CN=example.com/emailAddress=seanbrhn3@gmail.com"

COPY ./requirements.txt /app/requirements.txt

WORKDIR /app

RUN pip3 install -r requirements.txt

COPY . /app

ENV PORT 8080

CMD ["gunicorn", "--certfile=server.crt","--keyfile=server.key","app:app", "--config=config.py"]

非常感谢所有帮助!

【问题讨论】:

  • 您可以尝试将WORKDIR 放在dockerfile 的顶部吗?可能是应用在/app 的上下文中运行,但您生成的证书位于/server.crt

标签: python docker ssl gunicorn


【解决方案1】:

对于大多数人来说可能不是这样,但我想把它放在那里以防万一。我遇到了这个问题,并意识到我忘记了我在 docker run 命令中安装了一个卷。

因此,即使我在我的 Dockerfile 中下载文件(在 docker build 期间),只要我在 docker run 上安装了卷(卷不包含那些下载的文件),所有下载的文件都会被删除.

【讨论】:

    【解决方案2】:

    我解决了这个问题,而不是在 dockerfile 中创建证书和密钥,我使用 copy 命令从本地目录中获取我的证书和密钥并将其放入 dockerfile。我的问题只是我缺乏对 docker 的了解

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-11
      • 2013-08-02
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2016-07-10
      相关资源
      最近更新 更多