使用端口 80 部署标准容器时,IBM Cloud Code Engine 修订失败

问题描述

我正在尝试在 Code Engine project 中部署应用程序。容器映像非常标准:docker.io/library/httpd。我在配置向导中所做的只是将端口从代码引擎认的 8080 更改为端口 80。

代码引擎回来了:

修订未能以“退出代码 1”开始。检查您的映像和配置。

在日志中我发现了这两行:

(13)Permission denied: AH00072: make_sock: Could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: Could not bind to address 0.0.0.0:80

为什么?

解决方法

我不知道你的问题“为什么”的答案,除了我看到 Stackoverflow 上的一些人提到操作系统保留了高达 1024 的范围。我可以在端口 80 上本地运行我的 httpd,但在 IBM 代码引擎中,我必须更改为 8080。

这是我设法让它运行的方式:

我按照 this post 的暗示编辑了 httpd.conf:

“DockerHub 页面上有一个关于如何执行此操作的提示。必须获取备用配置文件并通过 Dockerfile 添加到容器中。

首先获取配置文件的副本:

docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf

然后编辑my-httpd.conf文件,修改端口:

Listen 8080

最后在Dockerfile中添加复制指令:

COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf "