docker启动nginx后挂了_十二、Docker部署nginx并挂载本地目录到镜像

拉取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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值