docker搭建nginx并且挂载宿主机目录

1、安装docker,这里就不赘述了

2、查看nginx版本

docker search nginx

3、设置nginx对外的挂载目录

mkdir -p /root/docker/nginx/conf
mkdir -p /root/docker/nginx/html
mkdir -p /root/docker/nginx/log

4、拷贝一份nginx.conf文件到/root/docker/nginx/conf/目录下

worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    # 限制body大小
    client_max_body_size 100m;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    upstream server {
        ip_hash;
        # gateway 地址
        server 127.0.0.1:8080;
        # server 127.0.0.1:8081;
    }

    server {
        listen       80;
        server_name  localhost;

        # https配置参考 start
        #listen       443 ssl;

        # 证书直接存放 /docker/nginx/cert/ 目录下即可 更改证书名称即可 无需更改证书路径
        #ssl on;
        #ssl_certificate      /etc/nginx/cert/xxx.local.crt; # /etc/nginx/cert/ 为docker映射路径 不允许更改
        #ssl_certificate_key  /etc/nginx/cert/xxx.local.key; # /etc/nginx/cert/ 为docker映射路径 不允许更改
        #ssl_session_timeout 5m;
        #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #ssl_prefer_server_ciphers on;
        # https配置参考 end

        # 演示环境配置 拦截除 GET POST 之外的所有请求
        # if ($request_method !~* GET|POST) {
        #     rewrite  ^/(.*)$  /403;
        # }

        # location = /403 {
        #     default_type application/json;
        #     return 200 '{"msg":"演示模式,不允许操作","code":500}';
        # }

        # 限制外网访问内网 actuator 相关路径
        location ~ ^(/[^/]*)?/actuator(/.*)?$ {
            return 403;
        }

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

        location /prod-api/ {
            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://server/;
        }

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

5、拉取相应的docker镜像

docker pull nginx:latest

6、搭建nginx服务器

docker run -d --restart=always --privileged=true --name nginx-web  -p 80:80 -p 443:443 -v /root/docker/nginx/cert:/etc/nginx/cert -v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/docker/nginx/html:/usr/share/nginx/html -v /root/docker/nginx/log:/var/log/nginx nginx:latest

###
-d:表示后台运行
--restart=always:表示自启动
--privileged=true:表示拥有更多的权限
--name 表示容易的命名
-p 宿主机端口和容器端口的映射
-v 宿主机目录和容器目录的映射
###

7、搭建完成之后查看容器的运行状态

docker ps -a 查看容器运行状态

###
如果搭建失败,使用docker logs +容器名字 查看报错,解决即可
###

8、至此,nginx就搭建完成了!!

你可能感兴趣的:(docker,docker,nginx,运维)