【发布时间】:2020-11-10 22:33:50
【问题描述】:
我已成功地将 gunicorn 添加到我的 Dockerized Django 应用程序中。我无法将 nginx 添加到组合中。 nginx 服务器几乎立即退出。任何帮助将不胜感激。
这是我的 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
这是我的 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_web.wsgi:application", "--bind", "0.0.0.0:8000"]
这是我的 nginx/Dockerfile:
FROM python:3.6
COPY nginx.conf /etc/nginx/conf.d
这里是 nginx.conf:
upstream django_web{
server web: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;
}
}
构建和运行一切的命令:
sudo docker-compose -f docker-compose.cambridge.yml up -d
下一条命令:
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16f4651047ec django_nginx "python3" 20 seconds ago Exited (0) 18 seconds ago django_nginx_1
03a460153a9c django_web "gunicorn Django.…" 21 seconds ago Up 19 seconds 8000/tcp django_web
当我运行sudo docker exec -ti 16f4651047ec ping web 时,我得到了积极的回应。
在新构建之后,我运行:sudo docker logs 16f4651047ec 我得到:
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
在尝试浏览到 http://my-ip:1337/ 后,我运行:sudo docker logs 16f4651047ec 我得到与上面相同的内容加上这一行:
161.88.207.220 - - [23/Jul/2020:13:29:11 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" "-"
p
在尝试浏览到 http://my-ip:1337/get_my_item/ 后,我运行:sudo docker logs 16f4651047ec 我得到与上面相同的内容,加上:
161.88.207.220 - - [23/Jul/2020:13:29:11 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" "-"
2020/07/23 13:33:29 [error] 29#29: *3 "/usr/share/nginx/html/get_my_item/index.html" is not found (2: No such file or directory), client: 161.88.207.220, server: localhost, request: "GET /get_my_item/ HTTP/1.1", host: "10.228.91.5:1337"
161.88.207.220 - - [23/Jul/2020:13:33:29 +0000] "GET /get_my_item/ HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" "-"
【问题讨论】:
标签: docker nginx docker-compose gunicorn