gpt4 book ai didi

Docker镜像自定义nginx.conf

转载 作者:行者123 更新时间:2023-12-02 12:20:14 26 4
gpt4 key购买 nike

我对此很陌生,我不知道我是否朝着正确的方向前进。我有一个可以正常工作的自定义 nginx.conf,我现在正在尝试用它构建一个 docker 镜像,以便我可以将它作为 kuberentes 中的容器运行。

这是我的 nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}


stream {
#define the various upstreams
upstream app_1 {
server 192.168.122.206:5678;
}

upstream app_2 {
server 192.168.122.206:9000;
}
#map source port to upstream
map $remote_port $backend_svr {
1234 "app_1";
1235 "app_2";
}
#all udp traffic received on 8000, depending on source it will be redirected
server {
listen 8000 udp;
proxy_pass $backend_svr;
}

}

在我的虚拟机上,我有/home/asvilla/docker-files/nginx-udp/Dockerfile 其中包含
FROM nginx
RUN chmod +w /etc/nginx/nginx.conf
COPY nginx.conf /etc/nginx/nginx.conf
RUN cat /etc/nginx/nginx.conf

我使用它构建它
docker build -t "custom_nginx:dockerfile" .

nginx 容器应根据 udp 数据包的来源,将端口 8000 上的 udp 流量重定向到端口 5678 或端口 9000。

我使用 docker run 'image-id' 运行,但它没有按预期运行。运行 docker ps 显示“PORTS 80/tcp”
和“命令 nginx-g 的守护进程 ...”

关于这些含义的任何指示。 nginx 默认将 tcp 绑定(bind)到 80 端口,但我更改了 nginx.conf,我运行的 cat 命令显示文件已更新。

我假设我必须以某种方式公开 nginx.conf 中的端口。非常感谢任何帮助。

最佳答案

如果您的最终目标是在 Kubernetes 中运行它,您最简单的方法是将这个配置文件放入 ConfigMap只需将您的部署配置为运行标准的 nginx 镜像。 (在普通 Docker 中,您可以使用 docker run -v 在运行时将配置文件注入(inject)到容器中,以达到类似的效果。)

nginx 在容器内监听什么端口并不重要。如果股票 nginx 容器期望在标准 HTTP 端口 80 上监听(并且它看起来像它的 Dockerfile 有一个 EXPOSE 80 指令)那么你可以接受它和 listen 80在您的 nginx 配置中(通过 TCP,而不是 UDP)。然后在您的 Kubernetes 部署中,您可以将其指定为容器端口,如果您想将其映射到其他东西,您可以在包装它的服务中执行此操作。 (在普通 Docker 中,如果您希望主机端口 8000 避免与其他事物冲突,docker run -p8000:80 。)

就最佳实践而言,我不鼓励直接将 IP 地址写入配置文件。如果它是集群外的持久服务器,您可以在网络中设置 DNS 服务器来解析其主机名,或者让 Amazon 的 Route 53 等云服务为您完成此操作。如果在 Kubernetes 中,请使用服务的 DNS 名称 backend.default.svc.cluster.local .即使你真的只有一个 IP 地址,创建一个 ExternalName service如果服务发生变化,将为您提供帮助。

假设你在 ConfigMap 中有配置文件,你的 Deployment 看起来很像 the sample Deployment in the Kubernetes documentation (它甚至运行 nginx:1.7.9 容器发布端口 80)。

关于Docker镜像自定义nginx.conf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51559511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com