一尘不染

Dockerized Nginx尚未启动

docker

我已经尝试按照以下教程和文档进行有关如何对Web服务器进行docker化的操作,但是我无法通过docker run命令使该服务运行。

这是我的Dockerfile:

FROM ubuntu:trusty

#Update and install stuff
RUN apt-get update
RUN apt-get install -y python-software-properties aptitude screen htop nano nmap nginx

#Add files
ADD src/main/resources/ /usr/share/nginx/html

EXPOSE 80
CMD service nginx start

我创建我的图像:

docker build -t myImage .

当我运行它时:

docker run -p 81:80 myImage

它似乎只是停止:

docker ps -a

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
90e54a254efa        pms-gui:latest      /bin/sh -c service n   3 seconds ago       Exit 0                                  prickly_bohr

我希望它与端口81-> 80一起运行,但事实并非如此。跑步

docker start 90e

似乎什么也没做。

我也尝试过直接输入

docker run -t -i -p 81:80 myImage /bin/bash

从这里我可以开始服务

service nginx start

从另一个标签中,我可以看到它正在按预期方式工作(也在我的浏览器中):

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
408237a5e10b        myImage:latest      /bin/bash           12 seconds ago      Up 11 seconds       0.0.0.0:81->80/tcp   mad_turing

所以我认为我的Dockerfile出了问题吗?谁能帮我这个忙,我对Docker还是很陌生。谢谢!

解决方案: 基于Ivant的回答,我找到了另一种在前台启动nginx的方法。我的Dockerfile CMD现在看起来像:

CMD /usr/sbin/nginx -g "daemon off;"

阅读 232

收藏
2020-06-17

共1个答案

一尘不染

到目前为止,官方的nginx映像使用它来运行nginx(请参阅Dockerfile):

CMD ["nginx", "-g", "daemon off;"]

就我而言,这足以使其正常启动。网上有一些教程建议完成此操作的更尴尬的方法,但以上内容似乎很干净。

2020-06-17