我试图从头开始构建一个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
server {
root /var/www/html
location / {
index.html
}
}
我运行这个命令
docker build -t hello-world .
和
docker run -p 80:80 hello-world
但是我说错了
* Starting Nginx Nginx
...fail!
可能是什么问题?
最佳答案
不要使用“service xyz start”
原文链接:https://www.f2er.com/nginx/434586.html要在容器内运行服务器,请不要使用service命令.这是一个脚本,它将在后台运行请求的服务器,然后退出.当脚本退出时,容器将停止(因为该脚本是主要进程).
而是直接运行服务脚本为您启动的命令.除非它退出或崩溃,否则容器应继续运行.
CMD ["/usr/sbin/Nginx"]
Nginx.conf缺少事件部分
这是必需的.就像是:
events {
worker_connections 1024;
}
server指令不是顶级元素
您在Nginx.conf的顶层有服务器{},但它必须在协议定义(如http {})内才有效.
http {
server {
...
Nginx指令以分号结尾
在root语句和index.html行的末尾缺少这些内容.
缺少“索引”指令
index index.html;
没有HTML元素“p1”
我假设您打算使用< 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;
}