如何指定通过docker-compose配置创建的用户拥有量?

问题描述 投票:1回答:1

我有以下docker-compose.yml

version: '3.7'

services:
  xxx:
    container_name: xxx
    image: xxx
    volumes:
      - config:/some_mountpoint
    user: 1000:1000

volumes:
  config: # <- this volume

如何指定将为哪个用户创建config卷,即mountpoint权限?

没有指定这些权限,/some_mountpoint由容器内的root:root拥有。

docker permissions docker-compose volume docker-volume
1个回答
0
投票

据我所知 - 你做不到。我想你必须创建一个自定义入口点,你可以在其中设置所需的权限。

这样的东西(这是docker-entrypoint.sh):

#!/bin/bash                                                                                                                                                                                                      

set -e                                                                                                                                                                                                           

user=dev                                                                                                                                                                                                       
user_id=${USER_ID:-1000}                                                                                                                                                                                         

if ! id "${user}" > /dev/null 2>&1; then                                                                                                                                                                         
  useradd -u ${user_id} -m -s /bin/bash ${user} > /dev/null 2>&1                                                                                                                                                 
fi                                                                                                                                                                                                               

mount_path=/some_mountpoint                                                                                                                                                                                 
mount_path_owner=$(ls -ld ${mount_path} | awk '{print $3}')                                                                                                                                                    
if [ "${user}" != "${mount_path_owner}" ]; then                                                                                                                                                                 
  chown -R ${user}:${user} ${mount_path}                                                                                                                                                                        
fi                                                                                                                                                                                                               

exec gosu ${user} "${@}"

它还需要容器中的gosu

所以你的docker-compose.yml可能看起来像这样:

version: '3.7'

services:
  xxx:
    entrypoint: ./docker-entrypoint.sh # <- use the custom entrypoint
    container_name: xxx
    image: xxx
    volumes:
      - config:/some_mountpoint

volumes:
  config: # <- this volume
© www.soinside.com 2019 - 2024. All rights reserved.