By philox
I am successfully running my Django web application using Gunicorn inside a docker container. This is running on a Ubuntu 16.04.6 system. What I am trying to do is have Nginx (running inside a Docker container) act as my web server and forward the request to the gunicorn docker container. Note: At the command line I can execute my nginx image and have it successfully ping the gunicorn one by using: sudo docker container exec -ti 11e65460b93c ping django_web where 11e65460b93c is the container id of the nginx container and django_web is the name of the gunicorn container.
When I browse to http://my_ip:1337/ I get the message: Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
I don’t know what that further configuration is. Any help would be greatly appreciated.
Here are my files: Dockerfile
FROM python:3.6
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
ARG HTTP_PROXY
ARG HTTPS_PROXY
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN useradd user
USER user
CMD ["gunicorn", "Django.wsgi:application", "--bind", "0.0.0.0:8000"]
docker-compose.yml
version: "3"
services:
  web:
      build: 
          context: .
          args:
            HTTP_PROXY: http://amec.zscaler.company.com:9480
            HTTPS_PROXY: http://amec.zscaler.company.com:9480
      image: django_web  
      container_name: django_web
      expose:
        - "8000"
  nginx:
      build: ./nginx
      ports:
        - "1337:80"
      depends_on:
        - web
nginx/Dockerfile
# this file resides in a folder called nginx which is a child of DJango (project root folder)
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d
nginx/nginx.conf
# this file resides in a folder called nginx which is a child of DJango (project root folder)
upstream django_web {
    server web:8000;
    server localhost:8000; 
    server 127.0.0.1:8000;
}
server {
    listen 80;
    location / {
        proxy_pass http://django_web/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}
Thanks, Phil
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Accepted Answer
Hi there @philox,
To me it looks like that the Nginx configuration file is loading correctly due to the default.conf Nginx file. What I could suggest is updating your Docker file to:
FROM nginx:alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
Let me know how it goes. Regards, Bobby
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.