docker部署nginx下载服务器 文件目录权限问题

这篇博客介绍了如何解决在使用Docker部署Nginx时遇到的403权限问题。问题源于Nginx镜像用户与挂载目录用户不一致。解决方案包括通过chmod命令临时授权,或者在Dockerfile中修改Nginx用户的UID和GID以匹配宿主机目录所有者。此外,还提供了通过Dockerbuild命令动态设置UID和GID的方法,以实现一劳永逸的权限配置。
摘要由CSDN通过智能技术生成

背景

        近期使用nginx搭建了一个下载服务器,但是会遇到访问403问题,显而易见,没有权限,下面干货。

分析

        nginx镜像启动是nginx用户,挂载的下载目录不是nginx用户,是宿主机用户,比如user01,这就导致nginx在访问该目录时候,没有权限。

解决

        没有权限,那就授权。最简单办法就是登录宿主机,给目录授权

 理论上授权r即可,但是我操时候还得授予x才可以访问???如有大神,可指教

chmod o+rx 目录

        但是每次都去授权,繁琐,而且太low ,想方法能否一劳永逸。nginx镜像默认用户是nginx,如果能改变他的组id和用户id,与user01一致,就可以解决(容器内的用户可以和宿主机的一致,这里不多解释,可自行查找资料了解)

dockerfile

FROM nginx

# Customization of the nginx user and group ids in the image. It's 101:101 in
# the base image. Here we use 33 which is the user id and group id for www-data
# on Ubuntu, Debian, etc.
ARG nginx_uid=101
ARG nginx_gid=101

# The worker processes in the nginx image run as the user nginx with group
# nginx. This is where we override their respective uid and guid to something
# else that lines up better with file permissions.
# The -o switch allows reusing an existing user id
RUN usermod -u $nginx_uid -o nginx && groupmod -g $nginx_gid -o nginx

如果目录所属不是当前用户,就在dockerfile里面写死uid和gid,直接build;如果是当前用户,可以执行下面命令重新build

docker build --build-arg nginx_uid=$(id -u) nginx_uid=$(id -g) -t nginx:v1 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值