扩展 Dockerfile nginx 镜像
Extend Dockerfile nginx image
我 运行 遇到了一个 nginx 限制问题,需要我扩展我的 nginx dockerfile 的配置,我发现 Dockerfile
列出了扩展逻辑 here 但我有无法正常工作,我不确定我应该为 COPY . /app/
和 使用什么,因为我不需要将任何内容复制到我的图像中理解,我只需要那个魔法脚本。
这里是整个Dockerfile供参考
FROM jwilder/nginx-proxy
COPY . /app/
RUN { \
# Increased the number of worker_processes from any number to 4
sed -i 's/\(worker_processes\s*\)[0-9]*;/;/' /etc/nginx/nginx.conf; \
# Increased the number of worker_connections from any number to 19000
sed -i 's/\(worker_connections\s*\)[0-9]*;/9000;/' /etc/nginx/nginx.conf; \
}
删除 COPY
不起作用,构建上下文变得很大(超过 1GB)所以我猜它正在抓取它所在的 repo 中的所有内容。
我发现它叫做 derived dockerfile
,您需要在仓库中 运行 它来构建该图像(而不是在您可能从中获取 1GB 构建上下文的仓库中。
所以解决方案:
-
在此处用更新后的 Dockerfile
替换
运行 你的 docker 构建命令
我刚刚完成并推送,作为 kmdanikowski/nginx-proxy
公开可用,但我建议您自己做,这样它可以是最新的。
wader from Github 将他的应用放入图像中。你可以忽略它。
确实如此,您必须删除 COPY
行,然后您将获得具有更改设置的 nginx-proxy
。
Docker 将始终创建一个 build context。上下文包含同一工作目录中所有文件的副本。
因此,如果您 运行 docker build .
,则当前文件夹中的所有文件(和目录)都将添加到构建上下文中。
永远不要 运行 docker build
在您的根目录或主目录中。
根据 KevinDanikowski 的回答:是的,他的步骤有效,但这些步骤不正确,无法解释问题。
您无需克隆任何 git-repo 即可使 Dockerfile
正常工作。
在这种情况下,它将起作用,因为来自@KevinDanikowski 的链接回购协议并不是真的完整。
只创建一个新文件夹并将 Dockerfile
放在那里要容易得多。
在BASH
中:
$ mkdir newFolder
$ cd newFolder
$ cat > Dockerfile << EOF
FROM jwilder/nginx-proxy
RUN { \
# Increased the number of worker_processes from any number to 4
sed -i 's/\(worker_processes\s*\)[0-9]*;/;/' /etc/nginx/nginx.conf; \
# Increased the number of worker_connections from any number to 19000
sed -i 's/\(worker_connections\s*\)[0-9]*;/9000;/' /etc/nginx/nginx.conf; \
}
EOF
$ docker build .
我 运行 遇到了一个 nginx 限制问题,需要我扩展我的 nginx dockerfile 的配置,我发现 Dockerfile
列出了扩展逻辑 here 但我有无法正常工作,我不确定我应该为 COPY . /app/
和 使用什么,因为我不需要将任何内容复制到我的图像中理解,我只需要那个魔法脚本。
这里是整个Dockerfile供参考
FROM jwilder/nginx-proxy
COPY . /app/
RUN { \
# Increased the number of worker_processes from any number to 4
sed -i 's/\(worker_processes\s*\)[0-9]*;/;/' /etc/nginx/nginx.conf; \
# Increased the number of worker_connections from any number to 19000
sed -i 's/\(worker_connections\s*\)[0-9]*;/9000;/' /etc/nginx/nginx.conf; \
}
删除 COPY
不起作用,构建上下文变得很大(超过 1GB)所以我猜它正在抓取它所在的 repo 中的所有内容。
我发现它叫做 derived dockerfile
,您需要在仓库中 运行 它来构建该图像(而不是在您可能从中获取 1GB 构建上下文的仓库中。
所以解决方案:
在此处用更新后的
Dockerfile
替换运行 你的 docker 构建命令
我刚刚完成并推送,作为 kmdanikowski/nginx-proxy
公开可用,但我建议您自己做,这样它可以是最新的。
wader from Github 将他的应用放入图像中。你可以忽略它。
确实如此,您必须删除 COPY
行,然后您将获得具有更改设置的 nginx-proxy
。
Docker 将始终创建一个 build context。上下文包含同一工作目录中所有文件的副本。
因此,如果您 运行 docker build .
,则当前文件夹中的所有文件(和目录)都将添加到构建上下文中。
永远不要 运行 docker build
在您的根目录或主目录中。
根据 KevinDanikowski 的回答:是的,他的步骤有效,但这些步骤不正确,无法解释问题。
您无需克隆任何 git-repo 即可使 Dockerfile
正常工作。
在这种情况下,它将起作用,因为来自@KevinDanikowski 的链接回购协议并不是真的完整。
只创建一个新文件夹并将 Dockerfile
放在那里要容易得多。
在BASH
中:
$ mkdir newFolder
$ cd newFolder
$ cat > Dockerfile << EOF
FROM jwilder/nginx-proxy
RUN { \
# Increased the number of worker_processes from any number to 4
sed -i 's/\(worker_processes\s*\)[0-9]*;/;/' /etc/nginx/nginx.conf; \
# Increased the number of worker_connections from any number to 19000
sed -i 's/\(worker_connections\s*\)[0-9]*;/9000;/' /etc/nginx/nginx.conf; \
}
EOF
$ docker build .