Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running Nginx on Docker

I'm learning how to build Docker images from Dockerfiles. Here's my current Dockerfile:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y nginx
CMD ["/usr/sbin/nginx"]

I can build this image, run it, and connect to the container with docker run -t -i -p 80:80 mytestimage /bin/bash/. Then, I can run nginx and connect to the "hello world" page from a web browser.

But I can't get Nginx to run as a daemon (without manually starting it from the container's shell). I've tried docker run -d -p 80:80 mytestimage, but docker ps is empty. What am I doing wrong? I've been looking at the official Nginx Dockerfile, but I'm not sure which parts I need to add to my own Dockerfile.

like image 559
Joe Mornin Avatar asked Aug 31 '26 17:08

Joe Mornin


2 Answers

you need to add following in Dockerfile

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

and the docker container can be run using command : docker run -d -p 8980:80 test-nginx

above port 8980 just an example, this is configured from Dockerfile

like image 122
spectre007 Avatar answered Sep 03 '26 11:09

spectre007


The problem is that nginx doesn't run in the foreground so every time your container executes the CMD directive, it returns and then the container exits.

You need to add the following to your /etc/nginx/nginx.conf at the top

daemon off;

Then you can just run your container like this:

docker run -ti -p 80:80 mytestimage
like image 41
Rico Avatar answered Sep 03 '26 10:09

Rico



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!