gpt4 book ai didi

docker build certbot 电子邮件输入

转载 作者:行者123 更新时间:2023-12-02 18:27:22 27 4
gpt4 key购买 nike

我正在尝试使用 docker build 启动一个 webapp。为了生成证书,我想使用 certbot。但是,如果我只是把

RUN certbot --nginx,

我明白了

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): Plugins selected: Authenticator nginx, Installer nginx
An unexpected error occurred:
EOFError.

有没有办法在 Dockerfile 中提供或忽略此信息?

最佳答案

RUN certbot -n -m ${EMAIL} -d ${DOMAINS} --nginx

我的一个建议是不要在 docker 构建期间执行此操作,而是在容器启动时生成证书。这是因为 letsencrypt 将尝试在您指定的域中连接到您的服务器,这可能不是您构建镜像的地方。

不过,为了减少启动时间,您需要跳过引导依赖项(但您需要安装这些依赖项)。为此,我将在您的 Dockerfile 中使用以下命令列出证书(这将确保正确安装依赖项),然后更改 CMD(假设您使用的是 nginx 镜像)

docker 文件:

ARG EMAIL_ARG=defaultemail@example.com
ARG DOMAINS_ARG=example.com

ENV EMAIL=${EMAIL_ARG}
ENV DOMAINS=${DOMAINS_ARG}

RUN certbot --help
...
CMD ["sh", "-c", "certbot --no-bootstrap -n -m ${EMAIL} -d ${DOMAINS} --nginx", "&&", "nginx", "-g", "daemon off;"]

-n 用于非交互模式
--no-bootstrap 是跳过依赖项的引导(安装 python 等)
-m 是指定用于重要通知的邮箱
-d 是指定以逗号分隔的域列表

使用“sh”,“-c”将在执行命令时调用 shell,因此您将获得类似 shell 的行为,即用它们的值替换环境变量。将值作为构建参数传递给构建不会在容器启动时公开它们,这就是为什么它们随后被放入环境变量中的原因。从环境变量中使用它们的额外好处是您可以在不同的环境(开发、测试、阶段、生产等...)中覆盖这些值。

关于docker build certbot 电子邮件输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58924215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com