docker - 自定义 Nginx conf 未反映在 uwsgi-nginx docker 映像中
问题描述
我已经建立了一个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 都使用相同的监听端口。
解决方案
您使用的图像有一个自定义入口点脚本,它在启动时完全重写 Nginx 配置。有一些通过环境变量自定义它的最小能力,或者看起来如果您有一个/app/nginx.conf
文件被复制到/etc/nginx/nginx.conf
而其他文件未修改。如果您在 中确实有其他文件/etc/nginx/conf.d
,则除了此默认生成的文档外,还会记录它们以供使用。
此映像设置为在单个容器中运行两个单独的进程通常不被认为是 Docker 最佳实践。您还可以考虑基于标准python
镜像和单独的nginx
代理容器运行自定义镜像,也许使用 Docker Compose 将它们一起启动。标准nginx
镜像有一个固定的默认配置,可以更正常地覆盖(将COPY
其放入派生镜像或绑定挂载);它唯一的特殊设置是能够替换环境变量。
推荐阅读
- node.js - Nodejs:Twit Node API 状态发布时没有图像且没有错误
- node.js - Nodejs将变量从路由器文件传递到另一个路由器文件
- python - 改组张量有什么用
- r - 如何在 r 中为 elastsearch 设置 apikey
- ceph - 在内部存在不一致的对象时更改 osd
- next.js - 如何解决 NextJs Error: Failed to load / at loadComponents
- ios - 谷歌如何让同一帐户在 iOS 设备上的多个应用程序中可见?
- c++ - 我无法运行此代码来打印两点之间的距离。我只是一个初学者
- flutter - 手势检测器优先级
- java - Java - 根据传递值替换子节点 (BST)