Bootstrap

Docker挂载配置文件方式运行Nginx

本文以centos7系统为例,演示Docker挂载配置文件的方式运行Nginx

如何在linux系统上安装Docker,详见 https://blog.csdn.net/qq_35148205/article/details/144915388

首先安装nginx

docker pull nginx  # 下载最新版本docker pull nginx:1.24.0 #跟上版本号,下载指定版本

运行镜像,生成容器 (以最新版的nginx镜像为例)

docker run -d --name mynginx -p 80:80 nginx

在宿主机上创建文件目录(宿主机就理解为我们的linux操作系统)

在指定路径下创建conf, html, log文件夹
在这里插入图片描述

将容器中的nginx.conf文件夹中的内容复制到宿主机

docker cp mynginx:/etc/nginx/nginx.conf /你的文件目录/conf/
例:
docker cp mynginx:/etc/nginx/nginx.conf /usr/local/docker_config/conf/

将容器中的html文件夹中的内容复制到宿主机

docker cp mynginx:/usr/share/nginx/html /你的文件目录/
例:
docker cp mynginx:/usr/share/nginx/html /usr/local/docker_config/

修改nginx.conf内容:

根据自己的项目需求,修改nginx.conf内容。参考配置文件信息:

# user nginx;

worker_processes  1;

events {
    worker_connections  1024;
}


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

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }


        location /prod-api/ {             
            proxy_read_timeout 200s;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header    REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass   http://宿主机ip:端口/;    
        }       

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

}

在这里插入图片描述

删除刚才运行的nginx容器

docker ps -a # 列出所有的容器

docker rm -f xxxId # 根据指定的CONTAINER ID 删除指定的容器 

在这里插入图片描述
最后,通过挂载自定义配置文件的方式,运行Nginx

docker run  \
-p 80:80 \
--name mynginx \
-v /你的文件目录/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /你的文件目录/log:/var/log/nginx \
-v /你的文件目录/html:/usr/share/nginx/html \
-d nginx

例

docker run  \
-p 80:80 \
--name mynginx \
-v /usr/local/docker_nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker_nginx/log:/var/log/nginx \
-v /usr/local/docker_nginx/html:/usr/share/nginx/html \
-d nginx
;