解决:Docker镜像运行+Nginx访问出现的静态资源404错误

醉酒当歌 提交于 2019-12-04 07:52:59

一、问题背景:

Docker部署的应用需要上传文件,上传的静态文件需要通过nginx访问,出现nginx访问404问题!

二、解决方案:

1、docker部署应用时,将文件上传的目录挂载到宿主机的对应目录上。例如:应用上传到【/oss/home】中,将这个目录映射到主机的对应的【/oss/home】目录上,docker命令如下:

docker run -d -p 8082:8082 \
 -v /oss/home/material:/oss/home/material \
 --name myoss oss:v1
# 这里是将docker中的/oss/home/material的目录映射到/oss/home/material目录上

2、docker的nginx容器配置:

# 这里监听8084端口,并且静态资源根目录为/oss/home/
server{
        listen      8084;
        server_name localhost;
        charset utf-8;
		location /{
			root /oss/home/;
		}
        location /oss {
           alias /oss/home/material/;
        }
}

3、将docker的nginx容器内部的静态资源目录映射到刚才容器应用映射到主机的文件目录,就是刚才的【/oss/home/】,docker命令如下:

#这里映射的nginx配置的根目录-> /oss/home:/oss/home 
docker run -p 80:80  \
-p 8084:8084 --name mynginx \
-v /usr/local/docker/nginx/www:/www \
-v /usr/local/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/logs:/var/log/nginx \
-v /oss/home:/oss/home \
-d nginx 

4、监测端口是否开放,成功的话如下图,不成功的话就要去开启该端口允许外部访问。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!