我正在尝试在容器中安装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:[错误] open()“ /run/nginx.pid”失败(2:没有这样的文件或目录)”。那是什么?
p.s。在安装了ubuntu,node.js和nginx的docker hub上是否有一些映像?为了简单起见,我想将它们放在一个容器中。
答案 0 :(得分:6)
nginx -s reload
仅在nginx运行时才能使用。它向nginx的主进程发送信号,该信号本身会通知工作进程。
这里的问题是,在构建过程中没有运行nginx实例。因此您无法重新加载它。
这不是一个真正的问题。由于nginx没有运行,因此不需要重新加载它。启动nginx(使用phusion基本映像时使用runit初始化文件)后,它将加载您提供的配置。
也就是说,我不建议您在单个容器中运行多个服务。如今,使用docker-compose轻松协调多个容器。
答案 1 :(得分:1)
您可以使用 https://github.com/smebberson/docker-ubuntu-base/tree/master/nginx-nodejs
在同一容器中同时使用Nginx和Node.js的图像。这是[smebberson / nginx] [smebbersonnginx]和smebberson / nodejs的组合。