Openssl 命令在 Dockerfile Run 中不起作用

阴茎发育

我是 Docker 的新手。我正在尝试通过一些基本操作来增加我的理解。我已经创建了一个非常基本的 web 应用程序,并想为它创建一个 Dockerfile。我想做的一件事是通过 https 交付 webapp。我想使用让我们加密。刚开始时,我在 Let's Encrypt 的网站上找到了为本地开发创建证书的说明

我想把它作为我的 Dockerfile 的一部分。

我将以下内容添加到我的 Dockerfile 中:

RUN openssl req \
-x509 \
-out localhost.crt \
-keyout localhost.key \
-newkey rsa:2048 \
-nodes \
-sha256 \
-subj "/CN=localhost" \
-extensions EXT \
-config <(printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

每当我docker build在这个文件上运行命令时,我都会收到以下错误。

Step 12/18 : RUN openssl req -x509 -out localhost.crt -keyout localhost.key -newkey rsa:2048 -nodes -sha256 -subj "/CN=localhost" -extensions EXT -config <(printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
 ---> Running in 079b3085beba
/bin/sh: 1: Syntax error: "(" unexpected
The command '/bin/sh -c openssl req -x509 -out localhost.crt -keyout localhost.key -newkey rsa:2048 -nodes -sha256 -subj "/CN=localhost" -extensions EXT -config <(printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")' returned a non-zero code: 2

由于我的简单应用程序是 dotnet 应用程序,因此基本映像是FROM mcr.microsoft.com/dotnet/core/aspnet:3.1. 这是一个构建在3.1.4-buster-slimdebian 容器上的镜像

然后我运行,docker run -it mcr.microsoft.com/dotnet/core/aspnet:3.1以便我可以在该根容器上访问 shell,然后我能够将上述命令复制并粘贴到终端中,并且它工作得很好。

我在我的 Windows 机器上运行 Docker for Windows,所以我想可能是由于 Windows 和 Linux 之间的行尾不同而导致错误。我确保 Dockerfile 上的所有行结尾都是LF和不是,CRLF并且仍然遇到相同的错误。Dockerfile 是UTF-8编码,据我所知,它也是 Linux 的标准。

我不知道为什么我会收到这个错误。我需要对命令或 dockerfile 进行哪些更改才能使上述命令作为 Dockerfile 构建的一部分正常工作?

阴茎发育

感谢@michaeldel,我能够理解发生了什么问题。

经过一番搜索,我发现在自己的Dockerfile中,可以指定要使用的shell。我将我的 Dockerfile 更新为以下内容,现在一切正常。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
SHELL ["/bin/bash", "-c"]
RUN echo "$(openssl version)"
RUN openssl req \
-x509 \
-out localhost.crt \
-keyout localhost.key \
-newkey rsa:2048 \
-nodes \
-sha256 \
-subj "/CN=localhost" \
-extensions EXT \
-config <(printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用docker run命令将参数传递给Dockerfile中的CMD

RUN命令中的ARG替换不适用于Dockerfile

在带有'source'的Dockerfile中使用RUN指令不起作用

在Dockerfile中的RUN命令中进行迭代

npm run <命令>不起作用

Dockerfile RUN命令返回exec格式错误

在PowerShell中运行openssl命令

Dockerfile运行python命令不起作用

如何使用“&”创建Dockerfile到RUN命令?

Docker-我们需要在Dockerfile中包含RUN命令吗

MysqlDump命令在cron中不起作用

Dockerfile RUN合并pip命令

dockerfile中的docker run命令仅在未在cli上指定命令时才执行

dockerfile中的RUN命令产生的结果与在容器中手动运行相同命令的结果不同

Dockerfile RUN命令是否在登录Shell环境中运行?

当将/ bin / bash命令附加到docker run -it IMAGE ID后,为什么不执行Dockerfile中的命令?

Dockerfile RUN命令损坏。如何正确逃脱?

为什么Dockerfile中的相同RUN命令会导致图像之间的层大小不同?

gcloud auth在dockerfile中不起作用

ftp>中的ls命令不起作用!

Dockerfile RUN 读取命令给我错误

Maven 命令“mvn clean jetty:run”和其他 mvn 命令在 Eclipse 中不起作用

将在 unix 中测试的 dockerfile 转换为 windows,由于权限被拒绝,RUN 命令失败

CMD Dockerfile 中的转义命令

exec 形式的 Docker RUN 命令不起作用

Dockerfile:指定独立于 docker run 命令的启动命令

Dockerfile 不起作用 - 手动运行命令有效,但通过运行或入口点的相同命令不起作用

dockerfile 中的奇怪命令

python中的'openssl rsa -in'命令