docker下载nginx的配置(配置文件,日志,页面路径的问题)

0.1字数 477阅读 4117

问题

docker部署个nginx,实在是再简单不过了吧

 #拉取镜像
docker pull nginx
#启动一个容器
docker run --name docker_nginx -d -p 80:80 docker.io/nginx

就运行起来了

但是存在的问题是:
1.日志哪儿去了?
2.修改了配置文件怎么办?
3.项目的文件放在哪儿

一般来说,解决的办法就是把文件放在宿主机,然后挂载到容器中,修改配置文件只需要docker exec -it containe_name bash进入到容器nginx -s reload重新加载一次配置文件即可。

我是直接拉取的docker hub的nginx镜像
在容器中相关位置分别是:
日志位置:/var/log/nginx/
配置文件位置:/etc/nginx/
项目位置:/usr/share/nginx/html

解决

日志的问题:

nginx的日志比较简单,主要就是access和error日志,只需要挂载宿主目录到容器中nginx日志所在路径即可。

配置文件的问题

配置文件相对来说有点麻烦,一般nginx只需要加载nginx.conf就可以了,在dokcer中,是首先加载nginx.conf,然后在nginx.conf有这么一行include /etc/nginx/conf.d/*.conf;,就是加载conf.d目录下的配置文件。所以对于配置只需要挂载到conf.d,覆盖掉即可。

项目文件的问题

类似日志的操作,挂载宿主机目录到容器即可。

运行容器

1.在宿主机器创建目录

mkdir -p /zzz/mynginx/nginx/log
mkdir -p /zzz/mynginx/nginx/conf
mkdir -p /zzz/mynginx/nginx/html

2.运行容器

docker run --name docker_nginx -d -p 80:80\ 
  -v /zzz/mynginx/nginx/log:/var/log/nginx\
  -v /zzz/mynginx/nginx/conf:/etc/nginx/conf.d\
  -v /zzz/mynginx/nginx/nginx.conf:/etc/nginx/nginx/conf\ 
  -v /zzz/mynginx/nginx/html:/lx/html\
  nginx
#########
第一个-v:挂载日志目录
第二个-v:挂载配置目录
第三个-v:干脆把配置文件直接挂出来,不推荐
第四个-v:挂载项目目录

其他

1.修改配置文件后:
dokcer exec -it docker_nginx nginx -s reload即可,或者dokcer exec -it docker_nginx bash进入docker容器,nginx -s reload即可。

涉及到命令

在docker容器中执行命令:

dokcer exec -it docker_nginx 命令
或者dokcer exec -it docker_nginx bash 进入容器内执行。

验证nginx的配置文件和查看实际使用的配置文件的位置

nginx -t

查看容器信息

docker inspect 容器名

查看容器挂载情况

docker inspect 容器名 | grep Mounts -A 20


配置文件

/zzz/mynginx/nginx/conf/app.conf

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /lx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

推荐阅读更多精彩内容