【问题标题】:Custom Nginx conf not reflecting in uwsgi-nginx docker image自定义 Nginx conf 未反映在 uwsgi-nginx docker 映像中
【发布时间】:2021-06-30 17:54:54
【问题描述】:

我已经建立了一个 dockerfile。我的自定义 nginx conf (nginx.conf) 位于根目录中

FROM tiangolo/uwsgi-nginx:python3.8-alpine

RUN apk add py3-setuptools
RUN apk add python3-dev

RUN apk add gcc
RUN apk add g++

RUN apk add --no-cache libressl-dev curl-dev musl-dev libffi-dev make

ARG env

WORKDIR /app

COPY ./pip_req.txt /app
RUN pip install -r /app/pip_req.txt

COPY ./ /app

ENV UWSGI_INI /app/deployment/$env/uwsgi.ini

RUN rm /etc/nginx/conf.d/default.conf


COPY deployment/$env/supervisor.conf /etc/supervisor.d/app.ini
COPY deployment/$env/nginx.conf /etc/nginx/conf.d/nginx.conf

在 docker 映像部署中,我在 /etc/nginx/conf.d/nginx.conf 中获得默认内容

server {
    listen 80;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }
}

如果我用另一个名称复制 nginx.conf,文件复制正确,但我不确定哪个 conf 被使用,因为两个 conf 使用相同的监听端口。

【问题讨论】:

    标签: docker nginx uwsgi


    【解决方案1】:

    The image you're usinga custom entrypoint script,它在启动时完全重写了 Nginx 配置。有一些通过环境变量自定义它的最小能力,或者看起来如果您有一个 /app/nginx.conf 文件被复制到 /etc/nginx/nginx.conf 并且其他文件未修改。如果您在 /etc/nginx/conf.d 中确实有其他文件,则除了此默认生成的文档外,还会记录它们以供使用。

    此映像设置为在单个容器中运行两个单独的进程通常不被视为 Docker 最佳实践。您还可以考虑运行基于标准 python 映像和单独的 nginx 代理容器的自定义映像,也许使用 Docker Compose 将它们一起启动。标准的nginx 映像具有固定的默认配置,可以更正常地覆盖(COPY 将其放入派生映像或绑定挂载);它唯一的特殊设置是能够替换环境变量。

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多