Docker部署nginx,挂载,并配置nginx.conf

挂载格式: -p 机器的:镜像的

docker run --name nginx -p 8081:8081\

-v /www/workspace/nginx/nginx.conf:/etc/nginx/nginx.conf \

-v /www/workspace/nginx/html:/usr/share/nginx/html -d nginx \

-v /www/workspace/nginx/logs:/var/log/nginx \

-v /www/workspace/nginx/conf:/etc/nginx/conf.d

-d nginx

docker run:这是Docker的命令行接口(CLI)中的一个命令,用于启动一个新的容器实例。
--name nginx:这个选项为即将启动的容器指定一个名字,这里命名为nginx。
-p 8081:8081:这个选项将宿主机的8081端口映射到容器的8081端口。这意味着容器内的

                        Nginx服务器将响应宿主机的8081端口上的请求。
-v /www/workspace/nginx/nginx.conf:/etc/nginx/nginx.conf:这个选项将宿主机

                        的/www/workspace/nginx/nginx.conf文件挂载到容器内

                        的/etc/nginx/nginx.conf文件。这允许你直接修改宿主机的配置文件,而无需

                        重新构建容器。
-v /www/workspace/nginx/html:/usr/share/nginx/html:这个选项将宿主机

                        的/www/workspace/nginx/html目录挂载到容器内的/usr/share/nginx/html目

                        录。这意味着容器内Nginx服务器的HTML文件将从宿主机的这个目录中提

                        供。
-d:这个选项让Docker在后台运行容器。
-v /www/workspace/nginx/logs:/var/log/nginx:这个选项将宿主机

                        的/www/workspace/nginx/logs目录挂载到容器内的/var/log/nginx目录。这意

                        味着容器内Nginx服务器的日志文件将被写入宿主机的这个目录。
-v /www/workspace/nginx/conf:/etc/nginx/conf.d:

                        这个选项将宿主机的/www/workspace/nginx/conf目录挂载到容器内

                        的/etc/nginx/conf.d目录。这意味着你可以在宿主机的这个目录中创建额外的

                        Nginx配置文件,然后通过容器内的Nginx服务器使用它们。

--restart=always(一直启动)

--privileged=true(高级权限)
 

基本命令大同小异

访问报404,

docker logs -f nginx

查看日志,"/etc/nginx/html/index.html" is not found (2: No such file or directory),是因为习惯了Windows下nginx都在一个目录内,这里需要将前端位置替换成/usr/share/nginx/html(而不是html等)

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/json;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;
        # 指定前端项目所在的位置
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        # 反向代理到后端
        location /api {  
            default_type  application/json;
            #internal;  
            keepalive_timeout   30s;  
            keepalive_requests  1000;  
            #支持keep-alive  
            proxy_http_version 1.1;  
            rewrite /api(/.*) $1 break;  
            proxy_pass_request_headers on;
            #more_clear_input_headers Accept-Encoding;  
            proxy_next_upstream error timeout;  
            proxy_pass http://127.0.0.1:8081;
            #proxy_pass http://backend;
        }
    }

    upstream backend {
        server 127.0.0.1:8081 max_fails=5 fail_timeout=10s weight=1;
        #server 127.0.0.1:8082 max_fails=5 fail_timeout=10s weight=1;
    }  
}

worker_processes  1;:这行设置Nginx工作进程的数量为1。在生产环境中,通常会设置为等于CPU核心数。
events { worker_connections  1024; }:这行设置了每个工作进程可以打开的最大连接数。
http { ... }:这定义了HTTP服务器块,其中包括所有HTTP相关的设置。
include       mime.types;:这行包含了MIME类型配置,它告诉Nginx如何处理不同类型的文件。
default_type  application/json;:这行设置了默认的MIME类型为application/json。
sendfile        on;:这启用了sendfile指令,允许Nginx直接将文件数据发送给客户端,而不需要先将数据读入内存。
keepalive_timeout  65;:这设置了客户端连接的keepalive超时时间。
server { ... }:这定义了一个服务器块,它监听8080端口,并处理请求。
location / { ... }:这是Nginx的第一个位置块,它匹配所有请求。它将根目录设置为/usr/share/nginx/html,并将index.html和index.htm作为默认的入口页面。
error_page   500 502 503 504  /50x.html;:这定义了错误页面,当服务器遇到500、502、503或504错误时,会重定向到50x.html页面。
location = /50x.html { ... }:这是一个精确匹配50x.html的location块,它将从/usr/share/nginx/html目录提供这个文件。
location /api { ... }:这是另一个位置块,它为所有以/api开头的请求提供代理服务。它设置了proxy_pass指令,将请求代理到http://127.0.0.1:8081。
upstream backend { ... }:这定义了一个上游服务器(upstream)块,它包含了一个服务器列表,用于处理请求。在这里,它将请求代理到运行在127.0.0.1:8081的服务器。

参考

docker安装与配置nginx详细过程-腾讯云开发者社区-腾讯云 (tencent.com)icon-default.png?t=N7T8https://cloud.tencent.com/developer/article/2126919?areaSource=106000.7&traceId=kNQvz6SbHjrfZyaaSMRjK

要在Docker部署NGINX挂载目录,你可以按照以下步骤操作: 1. 首先,创建一个用于存储NGINX配置文件和静态文件的目录。假设你创建了一个名为`nginx_data`的目录。 2. 创建一个名为`nginx.conf`的NGINX配置文件将其放置在`nginx_data`目录中。你可以根据你的需求自定义这个配置文件。 3. 将你的静态文件放置在`nginx_data`目录中,例如将HTML、CSS、JavaScript文件等放置在一个名为`static`的子目录中。 4. 现在,创建一个Dockerfile来构建NGINX镜像。在Dockerfile中,你需要指定NGINX基础镜像、复制`nginx.conf`到相应位置以及挂载`nginx_data`目录。 ```Dockerfile # 使用NGINX基础镜像 FROM nginx # 复制自定义的NGINX配置文件到容器中 COPY nginx.conf /etc/nginx/nginx.conf # 挂载目录 VOLUME /path/to/nginx_data:/usr/share/nginx/html # 暴露NGINX默认端口(可选) EXPOSE 80 ``` 请将上述代码中的`/path/to/nginx_data`替换为实际的`nginx_data`目录的路径。 5. 使用该Dockerfile构建NGINX镜像。打开终端,进入到包含Dockerfile的目录,然后执行以下命令: ```bash docker build -t mynginx . ``` 这将使用`mynginx`作为镜像名称构建NGINX镜像。请确保在运行此命令之前已经安装了Docker。 6. 构建镜像后,你可以使用以下命令运行NGINX容器挂载`nginx_data`目录: ```bash docker run -d -p 80:80 -v /path/to/nginx_data:/usr/share/nginx/html --name mynginx-container mynginx ``` 这将在端口80上运行NGINX容器,将主机上的`nginx_data`目录挂载到容器中的`/usr/share/nginx/html`目录。请将上述命令中的`/path/to/nginx_data`替换为实际的`nginx_data`目录的路径。 现在,你已经成功部署了一个挂载目录的NGINX容器。你可以通过访问`http://localhost`来查看NGINX服务器是否正常工作,通过修改`nginx_data`目录中的文件来更新NGINX配置和静态文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值