我正在尝试在我的容器中安装 nginx(然后是 Nodejs)。我在 nginx/文件夹中有我自己的 nginx 配置文件:
# --- Release with Alpine ----
FROM phusion/baseimage:0.10.1
# Create app directory
WORKDIR /app
RUN apt-get update \
&& apt-get -y install nginx
RUN ls /etc/nginx
COPY nginx/nginx.conf /etc/nginx/nginx.conf
RUN ls /etc/nginx
RUN ls /etc/nginx/sites-enabled
RUN rm /etc/nginx/sites-enabled/default
COPY nginx/serverlogic /etc/nginx/sites-enabled/serverlogic
RUN ls /etc/nginx/sites-enabled
RUN nginx -s reload
RUN echo "$PWD FINALFINALFINAL" && ls
EXPOSE 8080
但是我在 RUN nginx -s reload
行上收到错误消息:“nginx: [error] open() “/run/nginx.pid”失败(2:没有这样的文件或目录)”。那是什么?
附: docker hub上是否有一些安装了ubuntu、node.js和nginx的镜像?为了简单起见,我想将它们放在一个容器中。
最佳答案
nginx -s reload
只能在 nginx 运行时使用。它向 nginx 的主进程发送信号,主进程本身通知工作进程。
这里的问题是,您在构建过程中没有运行 nginx 实例。因此您无法重新加载它。
但这并不是一个真正的问题。由于 nginx 没有运行,因此不需要重新加载它。启动 nginx 后(使用 phusion 基础镜像时使用 runit 初始化文件),它将加载您提供的配置。
也就是说,我不建议在单个容器中运行多个服务。如今,使用 docker-compose 编排多个容器非常容易。
关于docker - 在 docker 构建期间重新加载 Nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466356/