gpt4 book ai didi

nginx - docker自定义nginx容器启动失败

转载 作者:IT老高 更新时间:2023-10-28 21:35:35 27 4
gpt4 key购买 nike

我正在尝试从头构建一个 nginx 镜像(而不是使用官方的 nginx 镜像)

FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
RUN rm -v /etc/nginx/nginx.conf
ADD nginx.conf /etc/nginx/
RUN echo "daemon off;" >> /etc/nginx/nginx.conf

EXPOSE 80

COPY ./files/ /var/www/html/

CMD service nginx start

这是我当前目录下的 nginx.conf 文件。

server {

root /var/www/html

location / {
index.html
}

}

还有我在 ./files 文件夹下的虚拟 index.html 文件

<p1>hello world</p1>

我运行这个命令

docker build -t hello-world .

还有

docker run -p 80:80 hello-world

但是我说错了

 * Starting nginx nginx
...fail!

可能是什么问题?

最佳答案

不要使用“服务 xyz 启动”

要在容器内运行服务器,请勿使用 service命令。那是一个脚本,它将在后台运行请求的服务器,然后退出。当脚本退出时,容器将停止(因为该脚本是主要进程)。

相反,直接运行 service 的命令脚本会为您启动。除非它退出或崩溃,否则容器应该保持运行。

CMD ["/usr/sbin/nginx"]

nginx.conf 缺少事件部分

这是必需的。比如:

events {
worker_connections 1024;
}

server 指令不是顶级元素

你有 server { }在 nginx.conf 的顶层,但它必须在协议(protocol)定义中,例如 http { }有效。

http {
server {
...

nginx 指令以分号结尾

root 末尾缺少这些声明和您的index.html行。

缺少“索引”指令

要定义索引文件,请使用 index ,而不仅仅是文件名本身。

index index.html;

没有 HTML 元素“p1”

我假设您打算使用 <p>在这里。

<p>hello world</p>

最终结果

Dockerfile:

FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
RUN rm -v /etc/nginx/nginx.conf
ADD nginx.conf /etc/nginx/
RUN echo "daemon off;" >> /etc/nginx/nginx.conf

EXPOSE 80

COPY ./files/ /var/www/html/

CMD ["/usr/sbin/nginx"]

nginx.conf:

http {
server {

root /var/www/html;

location / {
index index.html;
}
}
}
events {
worker_connections 1024;
}
daemon off;

关于nginx - docker自定义nginx容器启动失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42319649/

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