拉取nginxdocker pull nginx:1.18 准备工作问题:拉取nginx并运行为容器后,如果想要修改,那么就需要进入容器,这样很麻烦。 解决:因此,要将配置文件挂载出来。使用docker run -v 宿主机目录:容器目录 进行挂载。 失败案例:docker run -d --name web01 -p 10000:80 -v /usr/local/docker/nginx:/etc/nginx nginx:1.18 /bin/bash 此挂载是想将nginx容器的配置目录与宿主机同步,但是 这样去挂是没法成功的。 解决:先运行一个测试的nginx容器,并将里面的nginx配置文件内容复制出来,然后在进行挂载。 目录安排:我将所有Docker容器的东西放在/usr/local/docker 目录下,虽然挂载时会自动创建目录,但是,必须手动将其创建出来,并先写好对应的配置文件的内容。 nginx.conf配置文件 该配置文件在/usr/local/docker/nginx/conf 目录下 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; #tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf; } default.conf 该默认配置文件在/usr/local/docker/nginx/conf.d 目录下 server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { #root /data/nginx/html; root /usr/share/nginx/html; index index.html index.htm; #autoindex on; #try_files $uri /index/index/page.html; #try_files $uri /index/map/page.html; } #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; #} } 挂载日志文件 /usr/local/docker/nginx/logs:/var/log/nginx 这样将nginx的日志文件挂载出来是可以的!
但是/usr/local/docker/nginx:/etc/nginx 直接挂载配置目录是不行的,对此我没有明白,如果你明白,我想向你请教! 挂载项目目录 /www:/usr/share/nginx/html 这样挂载项目目录同样是可行的,但是同样的问题,挂载配置目录,所有内容都会消失。但是先将内容写出来,然后再配置却可以 ,对此我不明白。
启动容器使用下面的命令进行容器启动 docker run -d -p 10000:80 --name web01 -v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/docker/nginx/conf.d://etc/nginx/conf.d -v /www://usr/share/nginx/html -v /usr/local/docker/nginx/logs:/var/log/nginx nginx:1.18 通过实际测试可以,生效的配置文件是default.conf
注意:下面这个2个启动是我进行目录挂载测试的。 # 可以挂载成功,容器中的文件会同步到宿主机 docker run -d --name web02 -p 10000:80 -v /usr/local/docker/nginx/logs:/var/log/nginx nginx:1.18
docker run -d --name web03 -p 10000:80 -v /www:/usr/share/nginx/html nginx:1.18 我是小白,期待和优秀的你一起同行!
小白 2020年12月13日 转载:感谢您对自如初博客网站的认可,所有文章均属原创文章,技术类文章转载请注明出处,“自如初博客”;文学类文章请带文本链接地址,否则视为侵权!
|