docker部署的nginx无法访问宿主机文件问题

记录一次使用docker部署nginx之后,nginx无法访问宿主机文件的问题。

容器配置文件拷贝到宿主机。

docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /home/nginx/

启动nginx的命令。

docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

配置文件配置好之后访问网站发现找不到资源。

 遇到问题先查看配置文件配置是否有错误。

没问题,查看日志

 说明找不到 /home/genbotter/dist/index.html 文件,那我们就去找。

在该目录下确实有这个文件,那为什么会找不到呢?

要知道Docker是一种轻量级容器技术,与宿主机具有隔离性。我们做了与宿主机的配置文件挂载,但还没做 /home/genbotter/dist/ 路径的挂载。

docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/genbotter/dist:/home/genbotter/dist \
-d nginx:latest

配置好之后就能正常访问了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Docker部署Nginx,可以使用以下三种方法: 1. 直接拉取Nginx镜像并运行容器,将页面放入宿机(镜像)中的Nginx中: ```docker docker pull nginx docker run -p 8080:80 -v /opt/testNginx/testHtml:/usr/share/nginx/html -d nginx ``` 其中,`-p`参数将容器的80端口映射到宿主机的8080端口,`-v`参数将宿主机中的`/opt/testNginx/testHtml`目录挂载到容器中的`/usr/share/nginx/html`目录,使得Nginx可以访问宿主机中的静态资源。 2. 创建宿主机配置文件相关目录,并将Nginx配置文件挂载到容器中: ```docker mkdir docker mkdir nginx mkdir conf mkdir conf.d mkdir data mkdir logs ``` 其中,`conf.d`目录存放Nginx的配置文件,`data`目录存放静态资源,`logs`目录存放Nginx的日志。 创建Nginx配置文件`nginx.conf`,并将其挂载到容器中: ```docker worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } } ``` 然后运行容器: ```docker docker run -p 8080:80 -v /opt/testNginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/testNginx/data:/usr/share/nginx/html -v /opt/testNginx/logs:/var/log/nginx -d nginx ``` 其中,`-v`参数将宿主机中的`/opt/testNginx/conf/nginx.conf`文件挂载到容器中的`/etc/nginx/nginx.conf`文件,将宿主机中的`/opt/testNginx/data`目录挂载到容器中的`/usr/share/nginx/html`目录,将宿主机中的`/opt/testNginx/logs`目录挂载到容器中的`/var/log/nginx`目录。 3. 使用Docker Compose进行部署,创建`docker-compose.yml`文件: ```docker version: '3' services: nginx: image: nginx ports: - "8080:80" volumes: - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./data:/usr/share/nginx/html - ./logs:/var/log/nginx ``` 然后运行`docker-compose up`命令即可启动Nginx容器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青旬_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值