拉取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日
转载:感谢您对自如初博客网站的认可,所有文章均属原创文章,技术类文章转载请注明出处,“自如初博客”;文学类文章请带文本链接地址,否则视为侵权!
很赞哦!(1)