如何在 docker 实例中关闭 sendfile

How do I turn sendfile off in a docker instance

我有一个 nginx docker 实例 运行ning。在 docker 实例中有一个名为 /etc/nginx/nginx.conf

它有以下设置

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" 

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    ....
}

我运行 docker实例通过运行下面的命令。

docker run -d -P -v /Users/user/site:/usr/share/nginx/html --name mysite nginx

我如何 运行 上面的命令更改配置设置以关闭 sendfile?

这个。我需要创建一个构建文件吗?我有点困惑。

只需将您自己的配置文件作为 volume.

注入

假设您在 /tmp 中有一个 conf 文件,那么您可以 运行 容器:

docker run -d -P -v /tmp/my.conf:/etc/nginx/nginx.conf -v /Users/user/site:/usr/share/nginx/html --name mysite nginx

有很多选择:

  • 将 nginx.conf 放在一个卷中,因此您可以为不同的容器加载不同的容器(或者如果没有传递挂载卷参数,则使用默认容器)
  • 不是运行直接nginx,而是一个shell用sed改变的脚本,然后加载nginx(或者如果不需要改变直接加载nginx)
  • 在加载nginx的nginx.conf或bash中,注意从docker命令行传递的环境变量,并定义一些来改变定义的容器行为方式。
  • 以上的混合,仅使用 bash 脚本(修改 conf 并启动 nginx)在启动时安装卷并在 运行 上启动该脚本。
    • 创建一个基于 nginx 的新镜像,只修改配置文件,它将只对两个容器(配置文件)之间的差异进行加权。

这个有更多变体,使用更高级别的工具,但是这个很简单