sim*_*Pod 27 docker docker-compose
我正在尝试将docker-compose中的卷挂载到apache映像.问题是,我的docker中的apache是在下运行的,www-data:www-data但是在下面创建了挂载的目录root:root.如何指定已安装目录的用户?
我试着运行命令setupApacheRights.sh.chown -R www-data:www-data /var/www但它说chown: changing ownership of '/var/www/somefile': Permission denied
services:
httpd:
image: apache-image
ports:
- "80:80"
volumes:
- "./:/var/www/app"
links:
- redis
command: /setupApacheRights.sh
Run Code Online (Sandbox Code Playgroud)
我希望能够指定安装它的用户.有办法吗?
Arn*_* L. 18
首先确定www-data用户的uid :
$ docker exec DOCKER_CONTAINER_ID id
uid=100(www-data) gid=101(www-data) groups=101(www-data)
Run Code Online (Sandbox Code Playgroud)
然后,在本地计算机上,使用uid更改已安装目录的所有者(在此示例中为100):
chown -R 100 ./
Run Code Online (Sandbox Code Playgroud)
如果你正在使用docker-compose你也可以这样去:
$ docker-compose exec SERVICE_NAME id
uid=100(www-data) gid=101(www-data) groups=101(www-data)
$ chown -R 100 ./
Run Code Online (Sandbox Code Playgroud)
你可以把它放在一个单行中:
$ chown -r $(docker-compose exec SERVICE_NAME id -u) ./
Run Code Online (Sandbox Code Playgroud)
该-u标志只会打印uid到标准输出.
小智 8
将 rw 添加到卷挂载的末尾对我有用:
services:
httpd:
image: apache-image
ports:
- "80:80"
volumes:
- "./:/var/www/app:rw"
links:
- redis
command: /setupApacheRights.sh
Run Code Online (Sandbox Code Playgroud)
volume截至2019年中期,似乎没有所有者/组/权限设置,但是有一个不错的解决方法,那就是在docker-compose中使用所需设置创建目录。当docker-compose挂载到该位置时,它将保留这些权限。
Dockerfile:
# setup folder before switching to user
RUN mkdir /volume_data
RUN chown postgres:postgres /volume_data
USER postgres
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
volumes:
- /home/me/postgres_data:/volume_data
Run Code Online (Sandbox Code Playgroud)
若要实现所需的行为而不更改主机系统上的所有者/权限,请执行以下步骤。
将定义添加到您的docker-compose.yml
user: "${UID}:${GID}"
Run Code Online (Sandbox Code Playgroud)
所以你的文件可能看起来像这样
php: # this is my service name
user: "${UID}:${GID}" # we added this line to get a specific user / group id
image: php:7.3-fpm-alpine # this is my image
# and so on
Run Code Online (Sandbox Code Playgroud)设置.env文件中的值
UID=1000
GID=1001
Run Code Online (Sandbox Code Playgroud)现在,您容器中的用户的ID为1000,组的ID为1001,您可以为每个环境进行不同的设置。
如果您不使用docker-compose或想了解更多不同的方法来实现此目的,请通读我的信息源:https : //dev.to/acro5piano/specifying-user-and-group-in-docker- i2e
小智 5
为此撰写服务设置用户 www-data
user: "www-data:www-data"
Run Code Online (Sandbox Code Playgroud)
例子:
wordpress:
depends_on:
- db
image: wordpress:5.5.3-fpm-alpine
user: "www-data:www-data"
container_name: wordpress
restart: unless-stopped
env_file:
- .env
volumes:
- ./wordpress/wp-content:/var/www/html/wp-content
- ./wordpress/wp-config-local.php:/var/www/html/wp-config.php
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27087 次 |
| 最近记录: |