Docker 安装nginx并且配置文件的映射

使用docker pull命令从docker hub下载最新版本的nginx镜像

docker pull nginx

在宿主机下新建三个目录:www,logs,conf分别用来映射nginx容器的项目目录,日志目录,配置文件

mkdir /data/nginx
cd /data/nginx
mkdir www logs conf

使用nginx镜像创建一个nginx容器

docker run -d -p 8080:80 --name nginx-web -v /data/nginx/www:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx nginx

-v:将宿主机目录或者文件挂载到容器对应的目录或者文件

-d:守护态(后台)运行容器

-p:将容器的端口映射到主机的端口,前面80是宿主机端口,后面的80是容器端口

--name:命名容器

在/data/nginx/conf下新建nginx.conf配置文件

touch /data/nginx/conf/nginx.conf

配置nginx.conf文件

假如我们有两个项目分别在/data/nginx/www/demo1和/data/nginx/www/demo2下,对应的域名为demo1.diandi.com和demo2.diandi.com

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    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;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    server {
        listen       80;
        server_name  demo1.diandi.com;
        location / {
            root   /usr/share/nginx/html/demo1;
            index  index.html;
        }
    }

    server {
        listen       80;
        server_name  demo2.diandi.com;
        location / { 
            root   /usr/share/nginx/html/demo2;
            index  index.html;
        }   
    } 
}

因为我们宿主机的/data/nginx/www目录已经代理了容器的/usr/share/nginx/html目录所以root参数/usr/share/nginx/html实际目录是/data/nginx/www

重启容器

docker restart nginx-web
发布了31 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Jonny_jun_gao/article/details/105437727