skip to Main Content

I’m trying to create a reverse proxy using nginx running in docker. I have set up the nginx.conf file and it’s running fine locally. However, I don’t know how to set up the nginx docker with this changed nginx.conf file. Is there any way to do this?

Update: I have been able to change the nginx.conf file inside Docker. However, going to localhost:80/go returns a 502 Bad Gateway. I have a go app running on port 8081 using go run main.go and a python app running on port 8080 using flask run. I’m on a Manjaro VM.
This is the server part of the nginx.conf file

server {
    listen 80;

    location / {
        return 200 'hey there, welcome to our amazing app :)';
    }

    location /cbl {
        proxy_pass http://127.0.0.1:8080;
    }

    location /go {
        proxy_pass http://127.0.0.1:8081;
    }
}

And this is the Dockerfile

FROM nginx
RUN mv /etc/nginx/nginx.conf /etc/nginx/nginxorig.conf
#RUN pwd
#RUN cp /home/shark/hwr-nginx/nginx.conf /etc/nginx/conf.d/default.conf
VOLUME /usr/share/nginx/html
VOLUME /etc/nginx

How do I fix this?

[shark@shark-virtualbox hwr-nginx]$ sudo docker build . -t nginx
Sending build context to Docker daemon  7.168kB
Step 1/3 : FROM nginx
 ---> 7084cd82dcbb
Step 2/3 : RUN mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_orig
 ---> Running in 80e011c5b125
mv: cannot stat '/etc/nginx/nginx.conf': No such file or directory
The command '/bin/sh -c mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_orig' returned a non-zero code: 1
[shark@shark-virtualbox hwr-nginx]$ cat Dockerfile 
FROM nginx
RUN mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_orig 
RUN cp hwr-nginx/nginx.conf /etc/nginx/nginx.conf
```` RUN mv and RUN cp are also not working for me :(.

2

Answers


  1. You need to copy your nginx.conf to your container:

    For example: COPY conf /etc/nginx

    Docs here: https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/#managing-content-and-configuration-files

    Login or Signup to reply.
  2. In your Dockerfile, add an instruction to copy your project’s reverse proxy configured ngxin.conf into the docker image you intend to build, in the location where nginx will look for its configurations. For example, assuming your base image is Debian, you could do the following in your Dockerfile:

    # Move the default conf out of the way
    RUN mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_orig 
    # Copy in your project's new nginx conf
    RUN cp my_project/nginx.conf /etc/nginx/nginx.conf
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search