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

青旬

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

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

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

启动nginx的命令。

  1. docker run \
  2. -p 80:80 \
  3. --name nginx \
  4. -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  5. -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
  6. -v /home/nginx/log:/var/log/nginx \
  7. -v /home/nginx/html:/usr/share/nginx/html \
  8. -d nginx:latest

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

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

没问题,查看日志

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

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

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

  1. docker run \
  2. -p 80:80 \
  3. --name nginx \
  4. -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  5. -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
  6. -v /home/nginx/log:/var/log/nginx \
  7. -v /home/nginx/html:/usr/share/nginx/html \
  8. -v /home/genbotter/dist:/home/genbotter/dist \
  9. -d nginx:latest

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