在docker容器中重新加载Nginx

Pet*_*val 2 nginx docker

我想在我的容器中安装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 Code Online (Sandbox Code Playgroud)

但我得到一个错误就是RUN nginx -s reload:"nginx:[error] open()"/ run/nginx.pid"失败(2:没有这样的文件或目录)".那是什么?

ps是否在安装了ubuntu,node.js和nginx的docker hub上有一些映像?为简单起见,我想将它们放在一个容器中.

Shr*_*ser 10

nginx -s reload只能在nginx运行时使用.它向nginx的主进程发送一个信号,该进程本身通知工作进程.

这里的问题是,在构建过程中没有运行nginx实例.所以你无法重新加载它.

但这不是一个真正的问题.由于nginx未运行,因此您无需重新加载它.在启动nginx(使用phusion基本映像时使用runit init文件)后,它将加载您提供的配置.

也就是说,我不建议在单个容器中运行多个服务.现在,使用docker-compose协调多个容器非常容易.