docker - 将 nginx 默认端口映射到不同的端口
问题描述
嗨,我在 Redhat UBI Image 上运行 NGINX 服务器。我想在不同的端口上运行 nginx 服务器,比如端口 81。我已经对我的 dockerfile 和 nginx.conf 文件进行了更改并映射到端口 81。但是 nginx 没有启动端口 81。
有什么解决办法吗?
这是我的码头文件:
FROM registry.access.redhat.com/ubi8/ubi8-minimal
RUN microdnf --setopt=tsflags=nodocs install -y nginx procps net-tools ca-certificates dirmngr gnupg wget vim\
&& microdnf clean all \
&& rpm -q procps-ng
#COPY nginx.conf /etc/nginx/nginx.conf
#To start up NGINX
EXPOSE 81
CMD ["nginx", "-g", "daemon off;"]
这是我已映射到端口 81 的 nginx.conf 文件,但我似乎无法让 nginx 在我的本地主机上工作
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 81;
server_name localhost 127.0.0.1;
client_max_body_size 0;
set $allowOriginSite *;
proxy_pass_request_headers on;
proxy_pass_header Set-Cookie;
#ENV_ACCESS_LOG
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_set_header X-Forwarded-Proto https;
location /search/ {
proxy_pass http://**********:8983/****/;
}
location /test/ {
proxy_pass http://*****:8080/****/;
}
}
}
解决方案
要将端口从容器映射到主机,您必须使用“--publish”(或“-p”)选项启动容器(参见https://docs.docker.com/engine/reference/commandline/运行/)。
在您的情况下,它应该是:
docker run -p 81:81 <your_image>
其中第一个“81”是您要用于从主机访问容器的端口,第二个“81”是 nginx 正在侦听容器的端口
推荐阅读
- android - RecyclerView:需要忽略最后的滚动状态
- matlab - 如何为一些 Matlab 绘图轨迹获得良好的颜色分离?
- c# - 如何使用 npgsql 驱动程序将 JSON 字符串简单地插入到 postgreSQL 中的 JSON 字段中
- php - HY:093 参数号无效:参数未定义
- python - 如何修复“int”对象没有属性“triu_indices”
- scala - 删除由 spark-structured-streaming 写入的损坏的镶木地板文件时,我会丢失数据吗?
- r - pkgsearch:as.POSIXct.default(date) 中的错误:不知道如何将“日期”转换为“POSIXct”类
- mysql - DJANGO 中的模型有 4 个字段,其中两个给出错误:“添加一个不可为空的字段......”。我的问题是为什么其他两个字段不给出错误
- c# - 我的 Visual Studio For Mac System.Data 上不存在 DataTable.AsEnumerable()
- python - 如何从 AI Platform 作业访问 Google Cloud Storage Bucket