【问题标题】:error Back-off restarting failed container in nginx pod错误后退在 nginx pod 中重新启动失败的容器
【发布时间】:2020-03-05 12:46:55
【问题描述】:

使用 kubernetes 部署 nginx 映像的简单用例

用于创建镜像的 Dockerfile。 dockerfile COPY语句中的“./build/”,是reactjs代码的输出目录(npm run build),里面就是静态文件。

FROM nginx
COPY ./build/ /usr/share/nginx/html/ 
RUN rm -f /etc/nginx/conf.d/default.conf
COPY ./default.conf /etc/nginx/conf.d/
CMD ["nginx"]
EXPOSE 80 

为什么在nginx部署中会出现这个错误?错误是“后退重启失败的容器”。 手动运行容器,但 nginx 没有运行。我可以手动启动 nginx。我是否缺少 Dockerfile 或 /etc/nginx/conf.d/default.conf 文件中的任何配置?文件被复制并在github路径中可供参考。

root@desktop:~/github/nginx-app# docker run -it private.registry.corp/company-dev-poc/nginx-cms:001 bash
root@fc7ebd431ae2:/# service nginx status
[FAIL] nginx is not running ... failed!

【问题讨论】:

  • 你有docker run ... bash,这意味着你从一个镜像创建了一个容器,并在其中运行了一个bash 进程。您可能需要的是在没有命令名的情况下运行
  • @zerkms - 我使用的图像是从 Dockerfile 创建的,其中包含“CMD [”nginx“]”。但是当没有像“docker run -it private.registry/nginx-cms:001”这样的命令运行时,容器会立即退出。这个镜像如何开始使用 kubectl 部署?
  • 如果容器立即存在 - 这意味着 CMD 已经退出。

标签: nginx kubernetes dockerfile


【解决方案1】:

使用CMD ["nginx", "-g", "daemon off;"]

另外,您不需要指定命令。 CMD 和 EXPOSE 将在基础映像中定义 - 在本例中为 nginx。它们不需要再次定义。

【讨论】:

  • 感谢 Palash Goel。只是想通了这一点并使它起作用。将静态文件复制到根目录应该服务于上下文,对吧?
  • Dockerfile 的其余部分看起来不错,但可以缩短。在这里,我们使用一个已经在里面定义了配置的自定义图像。 Docker 文件更简单: FROM rivigotech/nginx:1.13.12-reconf COPY dist/ /usr/share/nginx/html
猜你喜欢
  • 2021-11-21
  • 2019-10-30
  • 2023-02-09
  • 2020-05-21
  • 2022-01-15
  • 2021-01-13
  • 2020-10-02
  • 2018-05-15
  • 2021-09-23
相关资源
最近更新 更多